Ok, então eu quero passar uma matriz muito básica para um servidor de atributo de dados jquery assim:
<div data-stuff="['a','b','c']"></div>
e depois recuperar assim:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Por que isso parece alertar '[' e não 'a' (consulte o link JSfiddle)
Link JSFiddle: http://jsfiddle.net/ktw4v/3/
javascript
jquery
html
json
wilsonpage
fonte
fonte
Declará-lo como um atributo significa que é uma string.
Então
stuff[0]
seria equivalente a:var myString = "['a','b','c']"; alert(myString[0]);
Você precisa fazer com que tenha a seguinte aparência:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Retração: a análise do jQuery falha porque não atendeu às regras de parseJSON.
No entanto, apoiarei minha solução. Existem aspectos dos outros que são menos do que ideais, assim como essa solução é menos do que ideal em alguns aspectos. Tudo depende de quais são seus paradigmas.
fonte
Como outros identificaram, o valor é tratado como string, portanto, retorna "[". Por favor, tente isto (aaa é o nome do div e eu tirei o material de dados):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
fonte
Uma abordagem diferente é postada em jsfiddle ;
var stuff = $('div').data('stuff');
stuff é uma string com 0º caractere como '['Bem,
var stuff = eval($('div').data('stuff'));
você deve obter uma matrizfonte