3

レイアウト全体に .button のクラスを持つ要素がたくさんあります。ボタンのクラスを持つ要素をクリックすると、要素が box1 または box2 のいずれかの親 div 内にあることを最初に確認する必要があります。

簡単な例は... クリックされたボタンが box1 div && (別の条件) 内にある場合、何かを行います。ボタンが特定の div 内にあるかどうかを確認するには、.closet と .length の組み合わせを使用するのが最善でしょうか?

<div id="box1">
        <div id="column1">
             <div class="round_button"></div>
             <div style="background: #000">
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
             </div>
        </div>
 <div> 

<div id="box2">
        <div id="column2">
             <div class="round_button"></div>
             <div style="background: #000">
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
                  <div class="button"></div>
             </div>
        </div>
 <div> 
4

5 に答える 5

8

上記の回答に加えて、多数のボタンがあり、イベントをそれぞれに個別にバインドする代わりに、先祖に基づいて一度だけアタッチしたい場合は、次のようなことができます。

$(".button").click(function() {
  if ($(this).is("#box1 *")) {}
});
于 2012-08-23T05:00:44.933 に答える
4

ボタンの 2 つのグループの機能が大幅に異なる場合は、ボタンの各グループにイベント ハンドラーを定義します。

$('#box1 .button').on('click', function(event) {
  // ...
});

$('#box2 .button').on('click', function(event) {
  // ...
});
于 2012-08-23T04:59:49.760 に答える
1

他にない場合は必要ありif statementません。

$('#box1, #box2').find('.button').click(function() {
  //  do something
});
于 2012-08-23T04:57:40.103 に答える
1

$(this).parents("#box1");ボタンのクリックイベント関数内で使用

于 2012-08-23T04:58:01.417 に答える
0
$('#box1 .button').click(function() {
  // first code
});

$('#box2 .button').click(function() {
  // second code
});
于 2012-08-23T05:01:15.887 に答える