序列化数据属性

时间:2015-06-18 14:12:57

标签: jquery arrays serialization multidimensional-array

我有一个拖放系统,每个丢弃的项目都会收到三个数据属性。

  • data-id
  • 数据序
  • 数据内容

现在我应该将这些属性放入多维数组中。它应该是这样的:

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

1 个答案:

答案 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);

});