Quiero almacenar Id. Del lado del servidor de elementos dentro de un atributo definido en las etiquetas <li>, de modo que pueda recuperarlos dentro de los métodos JS cuando haya un evento de clic en ellos.

¿Hay algún atributo que pueda usar para almacenar este tipo de datos?

Intenté poner identificadores del lado del servidor de elementos en el atributo id de las etiquetas <li> pero no permite identificadores que comiencen con dígitos !

3
Rajat Gupta 1 sep. 2011 a las 11:34

3 respuestas

La mejor respuesta

HTML5 presenta los atributos data- que pueden ser muy útiles en casos como este.

<li data-something="test">...</li>

Luego, en JavaScript, puede buscar usando:

elem.getAttribute('data-something');

O (no es compatible con IE):

elem.dataset.something;

http://jsfiddle.net/9g33e/

4
pimvdb 1 sep. 2011 a las 07:38

Si he entendido su problema correctamente, entonces no debería haber un problema al usar el atributo id, a menos que, por supuesto, ya lo esté usando para otro propósito.

La spec muestra los atributos válidos para {{X0} } elementos:

id, class, lang, dir, title, style y un montón de atributos de controlador de eventos (onclick y similares).

En teoría, podría usar casi cualquiera de ellos para almacenar sus datos, pero id sería mi opción preferida. Sin embargo, es importante recordar que los valores de atributo id tienen que comenzar con una letra (a menos que esté usando el doctype mencionado a continuación, pero en ese caso sería mejor usar el método siguiente de todos modos).

Como otros han mencionado, si está utilizando un doctype <!DOCTYPE html>, puede usar el nuevo data-* atributos que están destinados para este uso exacto.

2
James Allardice 1 sep. 2011 a las 07:55

En general, debe usar los atributos data-*.

<li data-myInformation="123">This is item 123</li>

Estos se pueden recuperar fácilmente, y los marcos populares como jQuery admiten un fácil acceso a estos atributos con un método element.data("myInformation").

3
Jamiec 1 sep. 2011 a las 07:38