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

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

<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)]
}

最佳答案

使用Array.splice(顺便说一句,这是本机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; });

10-06 13:06