0

checkboxes最初にチェックされているときに同じdivにあるものをすべて無効にしcheckbox、チェックされていない場合は再度有効にしたい。

そしてそれは私のために働いていますここをチェックしてください

$('.cdls_content_wrapper input:checkbox:first').click(function () {
    alert('HI');
    $('.cdls_content_wrapper').find(':checkbox').slice(1).each(function () {
        if ($('.cdls_content_wrapper input:checkbox:first').is(':checked')) {
            $(this).attr("disabled", true);
        } else {
            $(this).attr("disabled", false);
        }
    });
});

しかし、問題は、別の同じ div があり、最初にその div をクリックするcheckboxと、すべて同じことが行われることです。

関数を 1 つの div だけに限定するのではなく、より一般的なものにしたいと考えています。

4

5 に答える 5

3

試す

$('.cdls_content_wrapper').find(':checkbox:first').click(function () {
    $(this).closest('.cdls_content_wrapper').find(':checkbox').not(this).attr('disabled', this.checked)
});

デモ:フィドル

于 2013-05-17T09:10:23.127 に答える
2

チェックボックスを追加して、class次のようにすることができます。all

$('.cdls_content_wrapper input:checkbox.all').click(function(){
    if($(this).is(':checked')){
        $('input:checkbox',$(this).closest('tr').siblings()).attr("disabled", true);
    }else{
        $('input:checkbox',$(this).closest('tr').siblings()).attr("disabled", false);
    }
});

サンプルフィドル..

于 2013-05-17T09:29:58.827 に答える
0

次のように、関数をハンドラーの外に移動するだけです。

function DoWork(TheDiv) {

   var IsFirstChecked;

   TheDiv.find(':checkbox').each(function () {

        if (typeof(IsFirstChecked) !== 'boolean') {
              IsFirstChecked = $(this).prop('checked');
         } else {
              $(this).prop('disabled', IsFirstChecked);
         }
    });
}

そして、どこからでも呼び出します:

$('.cdls_content_wrapper').find('input').click(function () {
    DoWork($(this).closest('table'));
});

$('.SomeOtherClass').find('input').click(function () {
    DoWork($(this).closest('table'));
});

これが動作中のjsFiddleです

また、jQuery documentationに従って、使用.prop()するよりも使用する方が良い方法です.attr()

于 2013-05-17T09:11:59.280 に答える
-1

両方のdivのチェックボックスに異なるクラスを使用する必要があります

于 2013-05-17T09:17:18.730 に答える