用于从数组中删除项的Jquery代码

时间:2013-09-12 06:44:37

标签: javascript jquery arrays

我有一个复选框列表,同时选中复选框我必须将值添加到数组中,并且取消选中时我必须从数组中删除它。

以下代码使用。 但在取消选中时不会删除

<tr><td class="tdstyleSelect"><input type="checkbox" name="joblist" onclick="toNfroVmps(this.id);" id="' + i + '" checked>

var toNfroVmps = function(id) {
    if($('#' + id).is(':checked')) 
        elementIds.push(id);   
    else    
        delete elementIds[elementIds.indexOf(id)]
}

2 个答案:

答案 0 :(得分:9)

使用Array.splice(即btw,本机JS方法):

var index = elementIds.indexOf(id);
if (index !== -1) {
  elementIds.splice(index, 1);
}

您可以考虑使用哈希值(而不是普通数组)来存储数据:每个键对应一个ID,值为true或false。

var elementIds = {
  el1: true,
  el2: true,
  el3: false
  // ...
};

这样添加/删除元素将更加直接:

elementIds[id] = $('#' + id).is(':checked'); // either true or false

...你仍然可以使用各种jQuery列表理解函数将此哈希处理为数组。例如,这就是你如何收集所有已检查元素的ID:

var checkedIds = $.grep(elementIds, function(el) { return el; });

答案 1 :(得分:1)

您可以使用splice方法删除数组项。

var toNfroVmps = function(id) 
{
    if($('#' + id).is(':checked')) 
        elementIds.push(id);   
    else
    {
        // Select the index
        var i = elementIds.indexOf(id);

        // Check if the index exists, to prevent any errors that might happen
        // If exists, delete
        if(i !== -1)
            elementIds.splice(i, 1);

    }
}