3

こんにちは、マスター チェックボックスに関連するすべてのスレーブ チェックボックスをチェックするスクリプトを作成しています。これは、クラスを使用して行われます。したがって、マスター チェックボックスには、「master1」、「master2」などのクラスがあります。関連するスレーブ チェックボックスには、「slave1」クラス (master1 に関連)、「slave2」(master2 に関連) などがあります。

だから私はから始めます:

jQuery('.checks_div input[type="checkbox"].^="master"').click(function(){

したがって、マスターがクリックされたときに、関連するすべてのスレーブを選択してチェックしたいと思います。しかし、どのように?

ありがとう

4

2 に答える 2

3
$('input[type="checkbox"][class^="master"]').on("click",function(){})

しかし、委任する方が良いです

$(document.body).on('click','input[type="checkbox"][class^="master"]',function(){})

次に、クリック機能内で、マスターチェックボックスに隣接するdivにスレーブがある場合

var $slaves=$(this).next().find('input[type="checkbox"][class*="slave"]')

html が異なる場合は、この $(this) からそれらのスレーブを選択する方法を見つけてください。これは、チェックしたばかりのボックスです。

スレーブがjqueryオブジェクトに入ったら、それらをチェックします:

$slaves.prop('checked', true);

jQueryでチェックボックスに「チェック済み」を設定するを参照してください。

それらをチェックする以外に何もしない場合は、スレーブをjqueryオブジェクトにキャッシュする必要さえありません

 $(this).//chain to select slaves
        .prop('checked', true)
于 2013-01-30T11:41:23.243 に答える
0

さて、ここに私が来たコードがあります:

$(document.body).on('click','input[type="checkbox"][class^="master"]',function(){
  var slaves = $(this).next('label').next('div.slaves').find('input[type="checkbox"][class*="slave"]');
  var master = $(this);
  $(slaves).attr('checked', $(this).is(':checked'));
});

これはうまくいきます。jquery バージョン 1.9.0 以降でおそらくバグを見つけましたが。ここ: http://jsfiddle.net/x3NpL/

1.8.3 は正常に動作しますが、それ以上にすると 2 回動作し、動作しなくなります.. 非常に奇妙です。$(slaves).click() が使用されている場合、これは発生しませんが、click() には望ましい結果がありません。

とにかく、私が使用した解決策は、関連するスレーブを囲むために div を追加することですが、div なしでそれを行う方法を知りたいです。アイデアは簡単です: マスターのクリックをキャッチし、そのクラス番号 (master14 - 番号 14 など) を取得し、この番号 (slave14) を持つすべてのスレーブをチェックします。class="class1 class2 master14" のように、クラスが複数のクラスを保持している可能性があるという事実を考慮して、そこから番号を取得する方法がわかりません..

ありがとう

于 2013-01-30T22:03:03.787 に答える