【发布时间】:2023-03-20 15:02:01
【问题描述】:
我很清楚 closest() 函数“遍历 DOM 树,直到找到与提供的选择器匹配”。但是,有没有办法让这个函数从定义的点开始搜索所有元素及其子元素?
<ul id="one" class="level-1">
<li class="item-i">I</li>
<li id="ii" class="item-ii">II
<ul class="level-2">
<li class="item-a">A</li>
<li class="item-b">B
<ul class="level-3">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</li>
<li class="item-c">C</li>
</ul>
</li>
<li class="item-iii">III</li>
</ul>
如果我选择一个类为item-iii 的元素,并想返回一个类为item-3 的元素,选择器会是什么样子?如果我正确理解了closest(),它将上升到 DOM 树,但从不检查是否有任何元素具有与第二个选择器匹配的子元素。
【问题讨论】:
-
不确定您在寻找什么。您是否正在尝试执行类似“找到与我所在的
ul相同的item-3类的元素?如果是这样,我会使用parent去你想去的地方,然后使用find。 -
@JacobM 我也这么认为,但改用:
$(this).closest('ul').find('.item-3') -
你不能只从顶部搜索并使用
find()吗?$("body").find(".item-3"); -
Ciaran:这相当于只做
$('.item-3')。 -
A. Wolff:这会表现得有点不同,因为如果他选择的初始元素恰好位于不是顶级元素的 ul 中怎么办?我正在设想使用
parent来达到足够高的水平以确保您达到您想要的水平,然后使用find。