Ok, entonces quiero pasar una matriz muy básica en un lado del servidor attrubute de datos jquery así:
<div data-stuff="['a','b','c']"></div>
y luego retroceder así:
var stuff = $('div').data('stuff');
alert(stuff[0]);
¿Por qué esto parece alertar a '[' y no a 'a' (ver enlace JSfiddle)
Enlace JSFiddle: http://jsfiddle.net/ktw4v/3/
javascript
jquery
html
json
wilsonpage
fuente
fuente
Declararlo como atributo significa que es una cadena.
Entonces
stuff[0]
sería equivalente a:var myString = "['a','b','c']"; alert(myString[0]);
Necesitas que se vea así:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Retracción: el análisis de jQuery falla porque no cumplió con las reglas de parseJSON.
Sin embargo, respaldaré mi solución. Hay aspectos de los demás que son menos que ideales, así como esta solución es menos que ideal en algunos aspectos. Todo depende de cuáles sean tus paradigmas.
fuente
Como otros han identificado, el valor se trata como una cadena, por lo que devuelve "[". Por favor intente esto (aaa es el nombre del div y saqué los datos):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
fuente
Un enfoque diferente se publica en jsfiddle ;
var stuff = $('div').data('stuff');
cosas es una cadena con el carácter 0 como '['Bueno,
var stuff = eval($('div').data('stuff'));
debería conseguirte una matrizfuente