Ok, więc chcę przekazać bardzo podstawową tablicę do strony serwera jQuery Data Attrubute w następujący sposób:
<div data-stuff="['a','b','c']"></div>
a potem wycofać się w ten sposób:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Dlaczego wydaje się, że to ostrzega „[” a nie „a” (patrz link JSfiddle)
Link do JSFiddle: http://jsfiddle.net/ktw4v/3/
źródło
Zadeklarowanie go jako atrybutu oznacza, że jest to ciąg.
Więc
stuff[0]
byłoby równoważne z:var myString = "['a','b','c']"; alert(myString[0]);
Musisz, aby wyglądało to tak:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Wycofanie: parsowanie jQuery nie powiodło się, ponieważ nie spełniało reguł parseJSON.
Jednak będę opowiadał się za moim rozwiązaniem. Są aspekty innych, które są mniej niż idealne, tak jak to rozwiązanie jest pod pewnymi względami mniej niż idealne. Wszystko zależy od tego, jakie są Twoje paradygmaty.
źródło
Ponieważ inni zidentyfikowali, wartość jest traktowana jako łańcuch, więc zwraca „[”. Spróbuj tego (aaa to nazwa div, a ja wyjąłem dane):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
źródło
Inne podejście jest opublikowane na jsfiddle ;
var stuff = $('div').data('stuff');
stuff to łańcuch z zerowym znakiem jako „[”Cóż,
var stuff = eval($('div').data('stuff'));
powinno Ci tablicęźródło