Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除jQuery组中属于其他成员后代的元素?_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 如何删除jQuery组中属于其他成员后代的元素?

Javascript 如何删除jQuery组中属于其他成员后代的元素?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,假设我收集了一组与某个选择器匹配的jQuery DOM节点,该选择器使得某些匹配节点可能是其他匹配的后代,例如: <div class="row"> <!-- ... --> <div class="row"><!-- ... --></div> <!-- ... --> </div> <div class="row"> <!-- ... --> &

假设我收集了一组与某个选择器匹配的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>

现在假设我将要执行的操作将影响每个节点的整个子树,我需要确保我最多对任何给定的DOM节点执行一次操作。如何删除属于同一组其他成员后代的组中的所有元素?

我发现实现这一点的最简单、最干净的方法是将
$.fn.not()
$.fn.find()的行为结合起来:


$elems.find($elems)
将返回
$elems
的所有成员,这些成员是
$elems
的一个或多个成员的后代(不包括元素本身,因此不必担心)
$elems.not(组)
将仅返回不在
组中的
$elems
的成员。这将一起查找属于其他成员子级的
$elems
的所有成员,然后返回所有其他内容。

如果顶级
.row
元素是公共父级的后代,请使用直接后代选择器:
$(“#parent>.row”)
当然,在某些情况下可以工作,但我更感兴趣的是一个更通用的解决方案,它在DOM可能更加分散和不可预测的情况下仍然有效。
var $rows = $('.row');
$rows = $rows.not($rows.find($rows));