如何在 jQuery 中从父级中选择所有子级(任何级别)?

发布于 2024-12-08 05:26:28 字数 247 浏览 0 评论 0原文

我必须 .unbind() 来自父节点的所有元素。

如何从父级中选择所有子级(任何级别)?

尝试过:

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

但它仅适用于第一个儿童级别...

这里有一个测试用例

I have to .unbind() all elements from a parent node.

How can I select all children (at any level) from a parent?

Tried :

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

but it works only for the first children's level...

Here there is a test case

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凶凌 2024-12-15 05:26:28

使用 jQuery.find() 查找超过一层深度的子级。

.find() 和 .children() 方法类似,除了
后者仅在 DOM 树中向下移动一层。

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

您需要 find() 中的 '*'

与其他树遍历方法不同,选择器
调用 .find() 时需要表达式。如果我们需要检索
所有的后代元素,我们可以传入通用选择器
'*' 来完成此操作。

Use jQuery.find() to find children more than one level deep.

The .find() and .children() methods are similar, except that the
latter only travels a single level down the DOM tree.

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

You need the '*' in find():

Unlike in the rest of the tree traversal methods, the selector
expression is required in a call to .find(). If we need to retrieve
all of the descendant elements, we can pass in the universal selector
'*' to accomplish this.

两人的回忆 2024-12-15 05:26:28

我认为你可以这样做:

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

但这会导致很多开销

I think you could do:

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

but it would cause a lot of overhead

黑凤梨 2024-12-15 05:26:28

看来原来的测试用例是错误的。

我可以确认选择器 #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/

It seems that the original test case is wrong.

I can confirm that the selector #my_parent_element * works with unbind().

Let's take the following html as an example:

<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>

And the jquery bit:

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

You can try it here: http://jsfiddle.net/fLvwbazk/7/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文