0

検索フォームのグループ内のチェックボックスを操作するために、html data-* タグに基づいて機能する jQuery のチャンクがあります。

[すべて] チェック ボックスをクリックすると、残りのすべてのチェック ボックスがオフになります (これはいつでも問題なく機能します)。

ここで、「すべて」が選択されているときに別のオプションをクリックすると、「すべて」の選択が解除されますが、これも意図したとおりに機能します。

ただし、必要に応じて、[すべて] チェックボックスの選択を解除できます。これにより、デフォルトで残りのチェックボックスが選択された状態になり、目的の結果の選択を解除できます。

これまでに他を変更していない場合、これは初めて機能しますが、他のチェックボックスバー「すべて」が選択されている場合、またはすでに「すべて」ボタンをクリックした場合、選択した場合は失敗し、再度選択を解除します.

それが何をしているのかについてのアイデアは大歓迎です(コンソールを使用して何をしていないかを見つけようとしましたが、これまでのところ手がかりはありません)。

以下の例。

html...
<input data-sel-group='group1' id='group1_all'/>
<input data-sel-group='group1' id='group1_1'/>
<input data-sel-group='group1' id='group1_2'/>
/html...

jQuery...
$('input:checkbox').on('click',function(){
var sel = $(this).data('sel-group'),
    all = $('#'+sel+'_all'),
    chk = all.is(':checked');
    if($(this).attr('id')==all.attr('id')){
        if(chk){
            $('input[data-sel-group="'+sel+'"][id!="'+sel+'_all"]').attr('checked', false);
        }else{
            $('input[id!="'+sel+'_all"][data-sel-group="'+sel+'"]').attr('checked', true);
        }
    }else{
        all.attr('checked', false);
        if($('input[data-sel-group="'+sel+'"]:checked').length<=0){
            all.attr('checked', true);
        }
    }
})
4

2 に答える 2

0

チェックボックス属性をオンに設定している間は、遅延実行を使用する必要があります。 このブログを参考にしてください

于 2016-04-18T11:09:06.180 に答える