Comment passer un tableau en jQuery .de données() attribut
Ok, donc je veux passer un très basic le tableau en jquery données attrubute côté serveur comme ceci:
<div data-stuff="['a','b','c']"></div>
et ensuite de récupérer de la sorte:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Pourquoi est-ce à comparaître pour alerter '[' et non pas 'a' (voir JSfiddle lien)
JSFiddle Lien : http://jsfiddle.net/ktw4v/3/
Vous devez vous connecter pour publier un commentaire.
C'est le traitement de votre variable sous forme de chaîne, le zéro de l'élément de qui est
[
.Ce qui se passe parce que votre chaîne n'est pas JSON valide, qui devrait utilisez des guillemets doubles comme un délimiteur de chaîne au lieu de guillemets simples. Vous devrez alors utiliser les guillemets pour délimiter l'ensemble de la valeur de l'attribut.
Si vous corrigez votre guillemets original de votre code fonctionne (voir http://jsfiddle.net/ktw4v/12/)
Lorsque jQuery voit JSON valide dans un attribut de données, il sera automatiquement le décompresser pour vous.
<div data-stuff="["a","b","c"]"></div>
Déclarer un attribut signifie que c'est une chaîne.
Donc
stuff[0]
serait équivalent à:var myString = "['a','b','c']"; alert(myString[0]);
Vous devez faire ressembler à ceci:
Rétractation: jQuery analyse échoue parce qu'il ne respecte pas les règles de parseJSON.
Cependant, je me tiendrai derrière ma solution. Il y a des aspects de ce que les autres sont moins qu'idéales, tout comme cette solution n'est pas idéale, à certains égards. Tout dépend de ce que vos paradigmes.
Comme d'autres l'ont identifié la valeur est traitée comme une chaîne de caractères de sorte qu'il est de retour "[". S'il vous plaît essayer ce (aaa est le nom de la div et j'ai pris les données des trucs):
Une approche différente est affichée à l' jsfiddle;
var stuff = $('div').data('stuff');
genre de choses est une chaîne de caractères avec 0e caractère '['Bien,
var stuff = eval($('div').data('stuff'));
devrait vous obtenir un tableau