1

我需要能够单击按钮 btn 并选中所有复选框,然后再次单击它,它将取消选中所有复选框。但我下面的代码只会检查所有并取消选中一次。为什么它停止工作?

<script>
$('document').ready(function(){
$("#btn").on("click", function () { 
       var $checkbox = $(".checkBoxClass");
       $checkbox.attr('checked', !$checkbox.attr('checked'));
 });
});

</script>
 <span id="btn">btn</span><br /><br />
        <input type="checkbox" class="checkBoxClass" id="Checkbox1" />
        <br />
        <input type="checkbox" class="checkBoxClass" id="Checkbox2" />
        <br />
        <input type="checkbox" class="checkBoxClass" id="Checkbox3" />
        <br />
        <input type="checkbox" class="checkBoxClass" id="Checkbox4" />
        <br />
        <input type="checkbox" class="checkBoxClass" id="Checkbox5" />
        <br />
4

2 回答 2

6

你期望!$checkbox.attr('checked')返回什么?因为$checkbox.attr('checked')返回“检查”或什么都不返回。

您不应该为此使用道具,因为它是真的/假attr

$('document').ready(function(){
   $("#btn").on("click", function () { 
       var $checkbox = $(".checkBoxClass");
       $checkbox.prop('checked', !$checkbox.prop('checked'));
    });
});

所以现在!$checkbox.prop('checked')返回true或者false你可以合法地!反对

于 2013-08-13T14:42:11.990 回答
1

关于什么...

$('#btn').on('click', function() {
    $('.checkBoxClass').each(function() {
        $(this).is(':checked') ? $(this).removeAttr('checked') : $(this).attr('checked','checked');
    });
});
于 2013-08-13T14:42:24.350 回答