我有一个拖放系统,每个丢弃的项目都会收到三个数据属性。
现在我应该将这些属性放入多维数组中。它应该是这样的:
data-order =“0”[data-id =“1”,data-content =“blabla”]; data-order =“1”[data-id =“2”,data-content =“another content”];
但我不知道如何实现这一目标。尚未在jQuery中使用数组。
感谢您的帮助!
这是我一直在尝试的东西,但没有成功:
<li class="dropped" data-order="0" data-id="1" data-content="blabla"></li>
<li class="dropped" data-order="0" data-id="2" data-content="another content"></li>
$(".send").click(function() {
var itterate = $(".dropped");
var data_array = new Array();
for (var i in itterate.data()) {
var sub_array = new Array();
sub_array['data-order'] = i;
sub_array['data-id'] = itterate.data()[i];
sub_array['data-content'] = itterate.data([i]);
data_array.push(sub_array);
}
var serialized = $.param(itterate.serializeArray().concat(data_array));
$("#result").text(serialized);
});
这是jsfiddle
答案 0 :(得分:6)
http://jsfiddle.net/hk120Lhq/1/
$(".send").click(function() {
var data_array = new Array();
$(".dropped").each(function(){
var item = {};
item['data-order'] = $(this).data('order');
item['data-id'] = $(this).data('id');
item['data-content'] = $(this).data('content');
data_array.push(item);
});
var serialized = JSON.stringify(data_array);
$("#result").text(serialized);
});
所以.each
与您尝试的循环相同。我不确定你在循环中做了什么,但我认为这是你想要的结果。
进一步简化:http://jsfiddle.net/hk120Lhq/3/
如果您只是希望从您的li获取所有数据属性,并且不确定将会有多少数据属性或将要调用它们,请执行以下操作:http://jsfiddle.net/hk120Lhq/4/
$(".send").click(function() {
var data_array = new Array();
$(".dropped").each(function(){
var item = {};
for(var i in $(this).data()){
item[i] = $(this).data(i);
}
data_array.push(item);
});
var serialized = JSON.stringify(data_array);
$("#result").text(serialized);
});