2011-02-04 9 views
7

Demasiado a menudo me encuentro almacenando datos de objetos en elementos dom ocultos. Tenía curiosidad si había una manera de adjuntar esta información al nodo dom mismo. Cuando intento crear atributos 'sobre la marcha', parece que no funciona. Sería mucho más fácil acceder a la propiedad con this.something en lugar de acceder al html contenido en un niño. Siento que debería saber cómo hacer esto, pero no es así. Gracias.una alternativa a la ocultación de datos en divs?

+0

increíble, gracias chicos. – Orbit

+0

Como ya se mencionó, jQuery.data es probablemente lo que está buscando. Dicho esto, mire las especificaciones html5 y los atributos 'data-', que son bastante impresionantes, y algo que ya verá utilizado en muchos sitios, ya que no se dividen en navegadores no html5 :) –

+0

No estoy seguro de por qué agregar atributos 'sobre la marcha' no funciona para usted. Eche un vistazo a este ejemplo para ver cómo hacerlo funcionar (http://www.webdevout.net/test?01o) – nybbler

Respuesta

9

¡Absolutamente! jQuery's .data().

$('#someId').data('myData', someValue); // To store the data 
$('#someId').data('myData'); // To retrieve it again 

Cualquier variable de JavaScript se puede almacenar como datos; no está limitada a cadenas.

Tenga en cuenta que esto realmente no adjunta datos al nodo DOM como usted dice (lo cual debe evitarse). jQuery mantiene su propio caché de todos los datos que almacena y los nodos DOM a los que desea adjuntarlos. Por lo tanto, no es lo mismo que domNode.myData = someValue.

+2

Vale la pena mencionar que el método 'data()' usará los atributos HTML5 'data-' como un mecanismo de almacenamiento/recuperación. Es posible escribir su marcado con los atributos de datos que puede leer jQuery. EG: '

Cat
' el valor del atributo 'data-animal' se puede recuperar así:' alert ($ ('# animal-1'). Data ('animal')); // cat' –

+0

@Nathan, probablemente debería haber mencionado eso. Aunque el atributo HTML solo se usa para la recuperación, no para el almacenamiento, y solo para el valor inicial. –

Cuestiones relacionadas