web-dev-qa-db-ja.com

jQueryの親からすべての子(任意のレベル)を選択する方法は?

親ノードのすべての要素を.unbind()しなければなりません。

親からすべての子(任意のレベル)を選択するにはどうすればよいですか?

試した:

$('#google_translate_element *').unbind('click');

しかし、それは最初の子供のレベルでのみ機能します...

ここ テストケースがあります

66
markzzz

jQuery.find() を使用して、子を見つけます複数のレベル深さ。

.find()メソッドと.children()メソッドは似ていますが、後者はDOMツリーを1レベルだけ下るだけです。

$('#google_translate_element').find('*').unbind('click');

find()には'*'が必要です:

他のツリートラバーサルメソッドとは異なり、.find()の呼び出しにはセレクター式が必要です。すべての子孫要素を取得する必要がある場合は、ユニバーサルセレクタ「*」を渡してこれを実行できます。

129
Konerak

私はあなたができると思う:

$('#google_translate_element').find('*').each(function(){
    $(this).unbind('click');
});

しかし、それは多くのオーバーヘッドを引き起こします

17

元のテストケースが間違っているようです。

セレクター#my_parent_element *unbind()で機能することを確認できます。

次のhtmlを例としてみましょう。

<div id="#my_parent_element">
  <div class="div1">
    <div class="div2">hello</div>
    <div class="div3">my</div>
  </div>
  <div class="div4">name</div>
  <div class="div5">
    <div class="div6">is</div>
    <div class="div7">
      <div class="div8">marco</div>
      <div class="div9">(try and click on any Word)!</div>
    </div>
  </div>
</div>
<button class="unbind">Now, click me and try again</button>

そしてjqueryビット:

$('.div1,.div2,.div3,.div4,.div5,.div6,.div7,.div8,.div9').click(function() {
  alert('hi!');
})
$('button.unbind').click(function() {
  $('#my_parent_element *').unbind('click');
})

ここで試すことができます: http://jsfiddle.net/fLvwbazk/7/

1
Zoup