Ok donc je veux passer un tableau très basique dans un côté serveur de données jquery comme ceci:
<div data-stuff="['a','b','c']"></div>
puis récupérez comme ceci:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Pourquoi cela semble-t-il alerter '[' et non 'a' (voir le lien JSfiddle)
Lien JSFiddle: http://jsfiddle.net/ktw4v/3/
la source
Le déclarer comme attribut signifie qu'il s'agit d'une chaîne.
Ce
stuff[0]
serait donc équivalent à:var myString = "['a','b','c']"; alert(myString[0]);
Vous devez le faire ressembler à ceci:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Rétractation: l'analyse de jQuery échoue car elle ne répond pas aux règles de parseJSON.
Cependant, je soutiendrai ma solution. Certains aspects des autres sont loin d'être idéaux, tout comme cette solution est loin d'être idéale à certains égards. Tout dépend de vos paradigmes.
la source
Comme d'autres l'ont identifié, la valeur est traitée comme une chaîne et renvoie donc "[". Veuillez essayer ceci (aaa est le nom de la div et j'ai sorti les données):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
la source
Une approche différente est publiée sur jsfiddle ;
var stuff = $('div').data('stuff');
stuff est une chaîne avec le 0ème caractère comme '['Eh bien,
var stuff = eval($('div').data('stuff'));
devrait vous obtenir un tableaula source