如何从JSON中删除json数组

时间:2015-03-03 06:09:32

标签: jquery

当我点击Addons时,它会打开一个弹出按钮,我可以选择/取消选中复选框,我将这些数据更新为数据 - 这是一个数据 - attr。

data-stuff数据数组中的数据看起来就是这样

[
    {
        "name": "checkbox-mini-0",
        "cost": "20"
    },
    [
        {
            "name": "checkbox-mini-1",
            "cost": "10"
        }
    ],
    [
        {
            "name": "checkbox-mini-4",
            "cost": "199"
        }
    ],
    [
        {
            "name": "checkbox-mini-5",
            "cost": "233"
        }
    ]
]

我的问题是当我取消选中时,如何根据名称删除数组?

http://jsfiddle.net/kgm9o693/15/

1 个答案:

答案 0 :(得分:2)

我认为你需要的是

// checkbox checked
//var toppcrusts = [];
$(document).on('click', '.ui-checkbox-off', function (event) {
    var vendoritemsdata = $('.lastItm_Wrap').data('stuff');

    var checkboxid = $(this).next().attr("id");
    var cost = $(this).attr("cost");

    var toppcrusts = {
        'name': checkboxid,
        'cost': cost
    };
    vendoritemsdata.push(toppcrusts);
    $('.lastItm_Wrap').data('stuff', vendoritemsdata).attr('data-stuff', JSON.stringify(vendoritemsdata));
});

// checkbox Unchecked
$(document).on('click', '.ui-checkbox-on', function (event) {
    var vendoritemsdata = $('.lastItm_Wrap').data('stuff');

    var name = $(this).next().attr("id");;
    $.each(vendoritemsdata, function ( i, item) {
        if(item.name == name){
            vendoritemsdata.splice(i, 1);
            return false;
        }
    });
    $('.lastItm_Wrap').data('stuff', vendoritemsdata).attr('data-stuff', JSON.stringify(vendoritemsdata));
});

演示:Fiddle

注意:.attr('data-stuff', JSON.stringify(vendoritemsdata))并非真正需要......只是因为在您的示例中您正在更新属性,而不是使用属性使用数据api

此外,数据结构略有变化,因为我认为不需要数组数组。