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

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

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

试过:

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

但只对第一代儿童有效。

这里 有一个测试用例

138933 次浏览

使用 JQuery find ()找到儿童 不止一层深。

Find ()和. children ()方法是相似的,除了 后者只在 DOM 树中传递一个级别。

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

你需要 find()中的 '*':

与其他树遍历方法不同,选择器 表达式在调用. find ()时是必需的 所有的子代元素,我们可以传递通用选择器 来完成这件事。

我觉得你可以这么做:

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

但这会造成很大的开销

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

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