1

祖先チェックボックスが選択されている場合、すべての子孫入力チェックボックスを選択することになっているスクリプトがあります。

ここを参照してください:http://jsfiddle.net/zJPfR/

トップレベルのチェックボックスを選択すると、その下にあるすべてのチェックボックスが選択されます。チェックボックスの選択を解除すると、チェックが削除されます。ただし、これを2回試みても、機能しません。

私がこれについて間違って行っている場合は、私に知らせてください。

ダリウス

        $('.poSelect').click(function() {
        var expandBox   = $(this).parents('.pohelpTbl').next('.expandBox');
        var receipts    = expandBox.find('input[type="checkbox"]');

        if ($(this).is(':checked')) {
            var status = true;
        } else {
            var status = false;
        }

        $(receipts).each(function (i) {
            var cb = $(this);
            cb.attr("checked",status);          
        });
    });
4

3 に答える 3

5

jQuery.attrは初期属性のみを使用します。.propの代わりに使用.attrして、現在のDOMを変更します。
cb.attr("checked",status);=>cb.prop("checked",status);

于 2013-02-21T15:27:02.737 に答える
1

そのはず

$('.poSelect').click(function() {
    var receipts    = $(this).closest('.pohelpTbl').next('.expandBox').find(':checkbox');

    receipts.prop('checked', this.checked);
});

receipts各アイテムを繰り返す必要はありません。.prop()直接呼び出すことができますreceipts

デモ:フィドル

于 2013-02-21T15:29:58.470 に答える
0

チェックされた属性の存在は、属性の値がtrueまたはfalseに設定されているかどうかではなく、チェックされるチェックボックスを示すものです。

これからの変更:

var cb = $(this);
cb.attr("checked",status);

これに:

var cb = $(this);
if (status){
    cb.attr("checked","checked");
}
else{
    cb.removeAttr("checked");
}
于 2013-02-21T15:29:43.460 に答える