如何使用jQuery定位特定的父div

时间:2011-01-18 07:07:43

标签: 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>
     </ul>
 </li>
</ul>

使用jQuery,定位具有“wrap”类但不是嵌套ul的子类的列表项的最佳方法是什么?或者,我怎么能用嵌套在一个嵌套在一个li中的ul的“wrap”类来taget li?

4 个答案:

答案 0 :(得分:4)

对于非嵌套的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')

答案 1 :(得分:1)

ul与li嵌套:

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

ul,它没有与li嵌套:

$("ul.wrap li:not(li > ul >li)")

答案 2 :(得分:0)

这样的事情,我相信:

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

答案 3 :(得分:0)

你有一个&#34;外部&#34; ul和内心&#34; UL认证。选择内部ul非常简单,只需使用后代选择器ul.wrap ul.wrap即可。在外部,有点棘手,因为你需要使用一个非选择器的条件:ul.wrap:not(ul.wrap ul.wrap)。你基本上是这样说的:给我所有没有父母带有包装的ul.wrap。如果你想选择&#34; li&#34;&#34;使用直接选择器,即每个选择器后面的> li

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

HTML:

<ul class="wrap" tag="outer">
 <li class="out"></li>
 <li class="out"></li>
 <li class="out">
     <ul class="wrap" tag="inner">
        <li class="out"></li>
        <li class="out"></li>
     </ul>
 </li>
</ul>

JQuery的:

alert($('ul.wrap:not(ul.wrap ul.wrap)').attr('tag'));
alert($('ul.wrap ul.wrap').attr('tag'));

alert($('ul.wrap:not(ul.wrap ul.wrap) > li').length);
alert($('ul.wrap ul.wrap > li').length);

<强>聚苯乙烯。我不会用&#39; li&#39;选择器以查找外部或内部ul。如果以编程方式填充它们,可能会遇到空的ul(这会破坏选择器的依赖于li),为什么要使用它?不需要?