2

我正在检查全部/无复选框。但是,它只能工作一次:它可以检查所有,然后取消所有检查,但不能再次检查它们。

http://jsfiddle.net/SDEwB/

check all/none: <input type = "checkbox" id = "check_all_none"></input>
<br/>
<input type = "checkbox" class = "others"></input><br/>
<input type = "checkbox" class = "others"></input>


$('#check_all_none').change(function () {
    if ( $(this).is(':checked') ){
        $('.others').attr("checked", true);
    }
    else{
        $('.others').removeAttr("checked"); 
       // $('.others').attr("checked", false); // tried this, too
    }
});
4

5 回答 5

7

利用

$('#check_all_none').change(function () {
    $('.others').prop("checked", this.checked);
});

演示:小提琴

于 2013-08-16T11:31:43.203 回答
5

尝试这个

 $('#check_all_none').click(function () {
if ( $(this).is(':checked') ){
    $('.others').prop("checked", true);
}
else{
    $('.others').removeAttr("checked");
 }

});

演示

于 2013-08-16T11:29:33.047 回答
1

使用prop而不是 attr。

if ( $(this).is(':checked') ){
    $('.others').prop("checked", true);
}
else{
    $('.others').prop("checked", false);
}

http://jsfiddle.net/SDEwB/3/

更新

就像阿伦说的,这更好:

$('#check_all_none').change(function () {
    $('.others').prop("checked", this.checked);
});
于 2013-08-16T11:30:43.427 回答
0
<input type = "checkbox" id = "check_all_none" onclick="checkAll(this)" />
<input type = "checkbox" class = "others" name="chk" /><br/>
<input type = "checkbox" class = "others" name="chk" /> 

查询:

function checkAll(t){
    if ( $(t).is(':checked') ){
        $('.others').prop("checked", true);
    }
    else{
        $('.others').attr('checked', false);
    }   
}

JavaScript:

function checkAll(t){
   var checkboxes= document.getElementsByName('chk');
    for (var i = 0; i < checkboxes.length; i++) {
        if(t.checked==true){
            checkboxes[i].checked = true;
        }else{
            checkboxes[i].checked = false;
        }
    }
}

我有声明功能。因为您可以在任何地方轻松地重用此代码。我编写了两种类型的代码(JQuery 和 JavaScript)。两者都工作正常。如果您不需要使用任何 jQuery 库,请使用 JavaScript 代码。

于 2015-03-30T06:00:48.947 回答
0

这里有一个简单的方法来检查所有想要的复选框:

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

演示

于 2013-08-16T11:34:14.537 回答