2015-05-11 22 views
0

可能是一個簡單的但無法實現的課程。查找div中的所有課程,除非他們在此div中

我如何:

查找「上」時,他們在另一個嵌套「選項卡容器」,除了根級別「選項卡容器」之稱中的所有類。含義我希望能夠在Tab A沒有受到影響的情況下更改Tab 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> 

是不是?

$tab.closest('.Tab Container').find('.on').not('Tab Container') 

謝謝!

+0

你想要在點擊標籤裏面的'li'嗎? – Tushar

+0

你錯過了'''裏面的'最接近'的'容器' – Tushar

+1

我會使用「>」所以:'$ tab.closest('。Tab .Container> .on')'這樣你只能得到「on 「 - 直接在根中的類。 – Mainz007

回答

1

的一種方法來實現它是這樣

$('.tab-container .on:not(.tab-container .tab-container .on)') 

選擇它將匹配所有on類嵌套在tab-container但不是在tab-container具有tab-container父元素的元素

jsFiddle example

請注意與空間寫作類被視爲一個s兩個獨立的類

1

在班級列表中,空格是分隔符。
因此class="Tab Container"給出了您的ul兩類:TabContainer
因此,在選擇元素時,必須在兩者之前放置.

在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"