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