2013-07-17 25 views
2

假設中的以下內容:jQuery的選擇要素,只有當他們沒有嵌套相同的元件

<div class="a"> <!-- select --> 
    <div class="b"> 
    <div class="a"> <!-- skip --> 
    </div> 
    </div> 
</div> 

<div class="b"> 
    <div class="a"> <!-- select --> 
    <div class="b"> 
     <div class="a"> <!-- skip --> 

     </div> 
    </div> 
    </div> 
</div> 

<div class="a"> <!-- select --> 

</div> 

如何,我只選擇最$(「A」)的元素?

編輯:有幫助JSFiddle,在這個例子中,只應選擇'a',而不是'a!'。

回答

7

這是過濾方法派上用場:

$('.a').not('.a .a'); 

這不包括嵌套在另一個.a所以你任何.a無論最外面的人是否是他們,只得到最外面的人自我嵌套在其他元素內。

+0

完美!不知道爲什麼我無法把頭繞在這裏。很簡單。 :) –

1

嘗試

var a = $('.a'), not = a.find('.a'); 
a.not(not); 

selector profiling

+0

爲什麼級聯過濾器表現如此糟糕? –

+1

@wentz__:可能是因爲jQuery必須解析選擇器,意識到它不是有效的CSS(請參閱http://stackoverflow.com/questions/10711730/whats-the-difference-in-the-not-selector-between-jquery -and-css),然後解析它並將其變成過濾器。這就是爲什麼我使用過濾器方法的原因,如果我知道我不能用適當的CSS選擇器來做 - 因爲選擇器最終會被轉換爲方法調用。 – BoltClock

相關問題