0

我在每一行都有一个复选框。我有一个按钮,可以删除选中复选框的所有行。为此,我必须获取选中复选框的行的 ID。我编写了以下代码。但不工作。请帮帮我。

按钮代码: <a class="row-delete" align="left" onclick="deleteItem()"/>

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
         $(":checkbox").change(function() {
            var notChecked = [], checked = [];
            $(":checkbox").map(function() {
               this.checked ? checked.push(this.id) : notChecked.push(this.id);
            });
            alert("checked: " + checked);
         });
         deleteAll(checked,0);
    }
}

上面的代码有什么问题?

4

2 回答 2

1

您在不需要的方法中注册change事件处理程序deleteItem,您只需使用 .each() 遍历复选框并更新所需的数组

此外,最好使用.each()而不是.map()因为您没有返回任何值

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
        var notChecked = [], checked = [];
        $(":checkbox").each(function() {
            if(this.checked){
                checked.push(this.id);
            } else {
                notChecked.push(this.id);
            }
        });
        alert("checked: " + checked);
        deleteAll(checked,0);
    }
}
于 2013-09-23T07:13:35.510 回答
1

删除onchange function因为deleteItem当你clicklink它会re-init改变checkbox elements

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
         var notChecked = [], checked = [];
         $(":checkbox").each(function() {
            id=this.id;
            this.checked ? checked.push(id) : notChecked.push(id);
         });
         alert("checked: " + checked);
         deleteAll(checked,0);
    }
}

你可以创建一个array of checked checkboxes喜欢,

   $(":checkbox:checked").each(function() {
        checked.push(this.id);
   });

如果你想在复选框的点击上删除项目然后试试,

$(":checkbox").on('click',function() {
   if($(this).is(':checked')){
      alert($(this).attr('id'));// this item is ready to delete
   }
});
于 2013-09-23T07:14:29.987 回答