如何删除作为其他成员后代的jQuery组的元素?

时间:2016-04-08 18:22:35

标签: javascript jquery html dom

假设我收集了一个与某个选择器匹配的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节点执行一次操作。如何删除组中作为同一组其他成员后代的所有元素?

1 个答案:

答案 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的所有成员,这些成员是其他成员的孩子,然后返回其他所有成员。