可能是一个简单的但却无法实现的目标。
我怎么能:
查找根级别内的所有类" Tab Container"叫" on"除非他们在另一个嵌套" Tab容器"。这意味着我希望能够在没有标签A受影响的情况下更改标签1。
<ul class="Tab Container">
<ul>
<li<a href="#">Nav Tab 1</a></li>
</ul>
<li class="on">Tab 1</li>
<li>Tab 2</li>
<li>Tab 3</li>
<li>
<ul class="Tab Container">
<li class="on">Tab A</li>
<li>Tab B</li>
</ul>
</li>
</ul>
是否与.not?
有关$tab.closest('.Tab Container').find('.on').not('Tab Container')
谢谢!
答案 0 :(得分:1)
实现它的一种方法是使用像这样的选择器
$('.tab-container .on:not(.tab-container .tab-container .on)')
它将匹配on
类的所有元素,这些元素嵌套在tab-container
中,而不是tab-container
中具有tab-container
父元素的
请注意将带空格的课程视为两个单独的课程
答案 1 :(得分:1)
在班级列表中,空格是分隔符
因此,class="Tab Container"
会为您的ul
两个班级提供Tab
和Container
因此,在选择元素时,您必须在两者前面放置.
。
在CSS选择器中,空格表示“内部”,因此.Tab .Container
表示“具有Container
类的元素位于具有Tab
类”的元素内的某个元素。
要使其应用于同一元素,请删除空格:
.Tab.Container
此外,您可以使用CSS伪选择器:not
而不是调用.not()
,这应该更快(基本上与Teneff's answer相同,但适用于您的HTML):
$('.Tab.Container .on:not(.Tab.Container .Tab.Container .on)')
这应该适用于class="on"
元素中class="Tab Container"
的所有元素,该元素不能位于具有class="Tab Container"
的其他元素中。