2010-09-08 22 views
5

Mi sitio web es XHTML 1.1 y agregué atributos 'rel' a las etiquetas <li> y <div> en mi página, para almacenar datos para un script jQuery en la página. Al validar mi página, aparece el error: "no hay atributo 'rel'". Entonces, ¿cuál es la mejor manera de almacenar datos arbitrarios en etiquetas HTML?Agregar datos a etiquetas XHTML

Estoy trabajando en una página de comentarios para mi sitio web. Cuando se ingresa un comentario, se PUBLICA mediante AJAX, que devuelve JSON de todos los comentarios. Luego miro los valores 'rel' para ver qué comentarios ya están en la página y solo agrego los nuevos.

El código jQuery funciona bien, solo los atributos 'rel' no validan.

+1

¿Por qué no solo devuelve JSON del nuevo comentario? – davehauser

+0

@Dave, pensé en eso, pero ¿y si alguien publicara un comentario entre la hora en que abrió la página y la hora en que publicó un comentario? Quería que se cargaran todos los comentarios nuevos. –

+0

Gracias chicos. No sé por qué incluso usé 'rel' en primer lugar, realmente debería haber usado 'id' (o 'nombre'). Me gusta la idea de extender XHTML para admitir nuevos atributos ... o simplemente podría cambiar a HTML5. –

Respuesta

7

Si bien no es una especificación XHTML, podría usar los atributos data- * que se incluyen en las especificaciones de HTML5.

http://html5doctor.com/html5-custom-data-attributes/

Si quieres seguir siendo totalmente compatible con XHTML 1.1, tendrá que crear un esquema e incluir su espacio de nombres en el elemento html, donde el esquema define los atributos que desea utilizar, y los elementos a lo que se aplican.

Extending XHTML

+0

+1 Puede comenzar a usar el Doctype HTML5 hoy, todos los navegadores deberían manejarlo correctamente. – davehauser

+0

Elegido como respuesta para la publicación Extender XHTML, eso está bien. –

1

Dado que rel no es un atributo válido para li, en su lugar debe usar el atributo id y también es válido.

+0

No estoy seguro de por qué no hice esto para empezar. –

0

creo que va en contra del espíritu de XHTML para almacenar datos "arbitrarias" en las etiquetas. En su lugar, debe usar el método jQuery.data.

+1

Acabo de publicar la misma respuesta y la eliminé. Si entiendo la pregunta correctamente, los datos ya deberían estar allí en el HTML. Si no fuera así, podría almacenar los datos en una variable y no tendría que agregarlos a un elemento HTML. – davehauser

0

Parece que a JQuery le gustan las clases como una forma de almacenar estados para diferentes elementos html.

Un ejemplo sería cómo jQuery UI Tabs usa la clase ui-state-active para definir qué pestaña está seleccionada actualmente.

Uno de los beneficios de este método es la facilidad con la que puede seleccionar elementos según los diferentes estados que está buscando.

Como recordatorio, puede agregar (virtualmente) tantas clases a un elemento como desee y simplemente separarlas por espacios.

<li class="client_data already_added red_text etc">Bob</li> 
Cuestiones relacionadas