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')「チェック済み」または何も返さないためです。

これは truey/falsy であるため、これにはpropを使用しないでください。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 に答える