选中/取消选中所有复选框

时间:2011-08-17 15:05:52

标签: jquery checkbox toggle

我正在尝试使用一个复选框来检查/取消选中所有其他复选框。

我正在使用此代码:

$("#checkall").toggle(   
    function () {
        $(".kselItems").attr('checked', 'checked');
    },
    function () {
        $(".kselItems").removeAttr("checked"); 
});

这样可以正常工作,但出于某种原因,带有checkall标识符的复选框(应该使每件事都能正常工作)永远不会被检查。

如何解决这个问题?

4 个答案:

答案 0 :(得分:7)

保持简单。试试这个

$("#checkall").click(function() {
    $(".kselItems").attr('checked', this.checked);
});

演示:http://jsfiddle.net/naveen/azkPR/

答案 1 :(得分:2)

尝试过滤掉选择器中的复选框。

        $("#checkall").toggle(   
            function () {
                $(".kselItems:not(#checkall)").attr('checked', 'checked');
            },
            function () {
                $(".kselItems:not(#checkall)").removeAttr("checked"); 
        });

答案 2 :(得分:0)

编辑:当我写的时候,xeno06也回答了:)

当您单击“checkall”时,它1)将值设置为选中,然后2)调用切换功能,该功能将找到“checkall”,并将其重新设置回来。

最好的方法是不将“.kselItems”类放到“checkAll”中,或者如果“checkall”在“.ksleItems”中,请使用

$(".kselItems not(#checkall)").(...)

$(".kselItems").not("#checkall").(...)

为了清楚起见,我会使用naveen解决方案

$("#checkall").click(function() {
    $(".kselItems :checkbox").not("#checkall").attr('checked', this.checked);
});

答案 3 :(得分:0)

你可以试试这个

$("#checkall").click(function() {
   $(".kselItems").prop('checked', this.checked);
});