单击按钮,在列表中获取已选中复选框的ID

时间:2013-09-23 07:08:34

标签: javascript jquery html jqgrid scripting

我每行都有一个复选框。我有一个按钮,删除选中复选框的所有行。为此,我必须获取选中复选框的行的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);
    }
}

上面的代码有什么问题?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

onchange function移除deleteItem,因为click link 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
   }
});

如果您想要删除项目,请单击复选框,然后尝试,

{{1}}