我们可以closest(selector)用来找到与选择器匹配的第一个祖先元素.它向上移动DOM树,直到找到选择器的匹配项.但是如果我想沿着DOM树向下移动直到找到选择器的匹配项呢?这样做有没有jQuery函数?或者我需要使用广度优先搜索来实现这一点吗?
举个例子.对于下面的DOM树,
<div id="main">
<div>
<ul><!-- I want to match this ul -->
<li>
<ul><!-- but not this ul -->
</ul>
</li>
</ul>
<ul><!-- and match this ul -->
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
该怎么办$('#main').closestDescendants('ul')?
像这样的东西可能就足够了:
$('#main ul:not(#main ul ul)')
Run Code Online (Sandbox Code Playgroud)
如果你需要更准确的东西,那么你可以使用each()来迭代元素列表,计算到#main的最短路径,并过滤掉路径比这长的元素。