假设我收集了一个与某个选择器匹配的jQuery DOM节点组,并且选择器使得某些匹配节点可能是其他匹配的后代,例如:
<div class="row">
<!-- ... -->
<div class="row"><!-- ... --></div>
<!-- ... -->
</div>
<div class="row">
<!-- ... -->
<div class="row">
<!-- ... -->
<div class="row"><!-- ... --></div>
</div>
<div class="row"><!-- ... --></div>
<!-- ... -->
</div>
$rows = $('.row');
现在假设我要采取的操作将影响每个节点的整个子树,我需要确保我最多只对任何给定的DOM节点执行一次操作。如何删除组中作为同一组其他成员后代的所有元素?
答案 0 :(得分:0)
我发现实现这一目标的最简单,最干净的方法是结合$.fn.not()
和$.fn.find()
的行为:
var $rows = $('.row');
$rows = $rows.not($rows.find($rows));
$elems.find($elems)
将返回$elems
的所有成员$elems
的一个或多个成员的后代(不包括元素本身,所以不用担心)。 $elems.not(group)
只会返回$elems
以外的group
成员。总之,这将找到$elems
的所有成员,这些成员是其他成员的孩子,然后返回其他所有成员。