Javascript 如何使用jQuery以特定的父div为目标

Javascript 如何使用jQuery以特定的父div为目标,javascript,jquery,dom,Javascript,Jquery,Dom,让我们以这个HTML为例: <ul class="wrap"> <li class="out"></li> <li class="out"></li> <li class="out"> <ul class="wrap"> <li class="out"></li> <li class="out"></li>

让我们以这个HTML为例:

<ul class="wrap">
 <li class="out"></li>
 <li class="out"></li>
 <li class="out">
     <ul class="wrap">
        <li class="out"></li>
        <li class="out"></li>
     </ul>
 </li>
</ul>

使用jQuery,针对具有“wrap”类但不是嵌套ul子级的列表项的最佳方法是什么?或者,我如何用嵌套在ul中的“wrap”类标记li,而ul嵌套在li中?

我相信类似这样的内容:

$("ul.wrap li ul.wrap")

对于非嵌套li,有两个选项:

$('ul.wrap:has(ul) > li') // For uls that specifically have a nested ul inside
$('ul.wrap > li:not(ul ul > li)') // For any top-level ul
对于嵌套的li:

$('ul.wrap ul.wrap > li')

ul与li嵌套:

$("li > ul.wrap > li")
$("ul.wrap li:not(li > ul >li)")
不与li嵌套的ul:

$("li > ul.wrap > li")
$("ul.wrap li:not(li > ul >li)")
你有一个“外部”ul和一个“内部”ul。选择内部ul非常简单,您只需使用子代选择器
ul.wrap ul.wrap
。在OuterOne中有点棘手,因为您需要使用not选择器的条件:
ul.wrap:not(ul.wrap ul.wrap)
。你基本上是说:给我所有的ul.wrap,没有一个父母有一个wrap。如果要选择“li”,请使用直接选择器,即每个选择器后面的li

我已将其添加到示例中,以向您展示它的工作原理:

Html:


Ps.我不会使用'li'选择器来查找外部或内部ul。如果按编程方式填充,可能会遇到空的ul(这将打破依赖于li的选择器),为什么要使用不需要的内容?

阅读此页上有关选择器的一些信息可能会很有用:。玩得高兴