如何使用jQuery查找最接近的后代(与选择器匹配)?

pow*_*boy 5 jquery

我们可以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')

Cur*_*Dog 0

像这样的东西可能就足够了:

$('#main ul:not(#main ul ul)')
Run Code Online (Sandbox Code Playgroud)

如果你需要更准确的东西,那么你可以使用each()来迭代元素列表,计算到#main的最短路径,并过滤掉路径比这长的元素。