Ok jadi saya ingin meneruskan array yang sangat dasar ke sisi server jquery data attrubute seperti ini:
<div data-stuff="['a','b','c']"></div>
dan kemudian mundur seperti ini:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Mengapa ini tampaknya mengingatkan '[' dan bukan 'a' (lihat tautan JSfiddle)
Tautan JSFiddle: http://jsfiddle.net/ktw4v/3/
sumber
Mendeklarasikannya sebagai atribut berarti itu adalah string.
Jadi
stuff[0]
akan setara dengan:var myString = "['a','b','c']"; alert(myString[0]);
Anda perlu membuatnya terlihat seperti ini:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Retraksi: penguraian jQuery gagal karena tidak memenuhi aturan parseJSON.
Namun, saya akan mendukung solusi saya. Ada aspek lain yang kurang ideal, sama seperti solusi ini kurang ideal dalam beberapa hal. Semua tergantung pada apa pola pikir Anda.
sumber
Seperti orang lain telah mengidentifikasi, nilai diperlakukan sebagai string sehingga mengembalikan "[". Silakan coba ini (aaa adalah nama div dan saya mengeluarkan data-barang):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
sumber
Pendekatan yang berbeda diposting di jsfiddle ;
var stuff = $('div').data('stuff');
barang adalah string dengan karakter ke-0 sebagai '['Nah, Anda
var stuff = eval($('div').data('stuff'));
harus mendapatkan arraysumber