17

マスターとスレーブのチェックボックスを制御するためのスクリプトを作成しました (自動チェックとチェック解除)。

これが私のJSです:

$(document).ready(function() {

    $('#myCheck').click(function() {
        $('.myCheck').attr('checked', false);
    });
    $('.myCheck').click(function() {
        if ($('.myCheck').is(':checked')) {
            $('#myCheck').attr('checked', false);
        } else {
            $('#myCheck').attr('checked', true); // IT DOESN'T WORK, WHY ?
            alert("Checkbox Master must be checked, but it's not!");
        }
    });

});

そして、ここに私のHTMLがあります:

<input type="checkbox" id="myCheck" checked="checked" />&nbsp;&nbsp;Checkbox Master<br />
<input type="checkbox" class="myCheck" value="1" />&nbsp;&nbsp;Checkbox Slave 1<br />
<input type="checkbox" class="myCheck" value="1" />&nbsp;&nbsp;Checkbox Slave 2

問題を理解するには、私の単純なJsFiddleを見てください。

EDIT 1: Inserが言ったように、問題はjQuery 1.9.2以降で発生します。jQuery 1.8.3 ではもう問題ありません。変...

EDIT 2 : Inser が解決策を見つけました。代わりに.attr('checked', true)使用してください。以下のコメントを見てください...

4

5 に答える 5

44

新しいバージョンの jQuery には prop メソッドを使用します。

$('#myCheck').prop('checked', true);
$('#myCheck').prop('checked', false);

http://jsfiddle.net/uQfMs/37/

于 2013-03-18T11:04:08.290 に答える
3

あなたはこれを試すことができます。

$('#myCheck').click(function() {
    var checkBoxes = $(this).siblings('input[type=checkbox]');
    checkBoxes.prop('checked', $(this).is(':checked') ? true : false);
});
于 2013-03-18T11:08:56.887 に答える
0

マスターのチェックボックスをオンにしたいだけかもしれません。

$('#myCheck').click(function() {
       $('.myCheck').attr('checked', false);
       $(this).attr('checked', true);
});

このフィドルを参照してください。

于 2013-03-18T10:39:55.007 に答える
0

私はいくつかの経験をしましたが、実際に $(':checkbox').attr('checked',false);はこれで「checked」属性を設定できましたが、ビジュアルに継続的に表示されません。$(':checkbox').prop('checked', true);これは完璧に機能します!これが助けになることを願っています。

于 2013-11-28T11:33:54.620 に答える