2009-07-09 9 views
5

Estoy trabajando en una página donde necesito asociar una lista de objetos con una fila de una tabla, y estoy usando jQuery.Usando jQuery.data para almacenar una lista de elementos

jQuery.data parece simplemente asociar una hoja de datos con una clave, mientras que necesito más como

id=4,setting=2 
id=3,setting=1 
... 

No sé cuánto tiempo la lista podría ser, y que podría estar vacío.

¿Hay una forma sensata de hacerlo?

Respuesta

8

Puede almacenar nada como datos de jQuery, por lo que podría hacer esto:

var myData = [ { id: 4, setting: 2 }, [ id:3, setting:1 ] }; 

$("#myitem").data("mydata", myData); 

Si desea seleccionar algo por id, que podría hacer esto:

var myData = {}; 

myData[4] = 2; 
myData[3] = 1; 

$("#myitem").data("mydata", myData); 

A continuación, puede acceder su configuración como esta:

var value = $("#myitem").data("mydata")[3]; // returns 1 
+0

Vale la pena señalar que si tiene el elemento, es mucho más eficiente usar '$ .data (elemento," mydata ")' que '$ (elemento) .data (" mydata ")' –

1

No he tenido una gran cantidad de tiempo para probarlo ahora, pero en lugar de almacenar una cadena simple en contra de la clave, ¿por qué no almacenar un objeto contra ella?

Parafraseando la documentación de jQuery ...

$("div").data("blah", {id: 4,setting: 2}); 
var myBlah = $("div").data("blah"); 
var id = myBlah["id"]; 
var setting = myBlah["setting"]; 

quiero saber cómo le va.

+0

Pero estoy tratando de almacenar una lista de los objetos ... –

+0

Lo siento, debería tener el usuario toda la matriz. Puedo ver que activa proporcionó la misma solución, pero con una matriz, y que la has preconcebido. Me complace que tengas una solución en funcionamiento. – belugabob

+0

Gracias por su ayuda :) –

0

Puede usar matrices para almacenar listas y objetos JSON para almacenar key-val ue pares.

<div id="DIV1"></div> 
<div id="DIV2"></div> 
<div id="DIV3"></div> 
<div id="DIV4"></div> 
<table><tbody><tr id="TR1"><td><td/></tr></tbody></table> 
<script type="text/javascript"> 
$(function() { 
    $("#TR1").data("blah", [{id: 4, setting: 2}, {id: 3, setting: 1}]); 
    $("#DIV1").text($("#TR1").data("blah")[0].id); 
    $("#DIV2").text($("#TR1").data("blah")[0].setting); 
    $("#DIV3").text($("#TR1").data("blah")[1].id); 
    $("#DIV4").text($("#TR1").data("blah")[1].setting); 
}); 
</script> 
Cuestiones relacionadas