我有一个复选框列表,同时选择复选框时,我必须将值添加到数组中,而取消选中时,我必须将其从数组中删除。
以下代码正在使用。
但它不会在取消选中时删除
<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; });