2010-06-17 60 views
0

我有這樣的HTML結構:第一層次元素的JQuery選擇器?

<div class="start"> 
    <div class="someclass"> 
    <div class="catchme"> 
     <div="nested"> 
     <div class="catchme"> <!-- STOP! no, no catchme's within other catchme's --> 
     </div> 
     </div> 
    </div> 
    <div class="someclass"> 
     <div class="catchme"> 
     </div> 
    </div> 
    </div> 
    <div class="otherclass"> 
    <div class="catchme"> 
    </div> 
    </div> 
</div> 

我找一個jQuery結構返回我的「開始」容器內的所有catchme的,除了包含在發現catchme所有catchme的。實際上,無論DOM樹中的深度如何,我只需要所有'第一級'catchme。

這是近的東西,但沒有真正罰款:

var start = $('.start'); 
// do smething 
$('.catchme:first, .catchme:first:parent + .catchme', start) 

我有點想進一步突破向下遍歷樹中的所有找到的元素的後面。有任何想法嗎?

回答

3

這會嗎?

$('.catchme:not(.catchme .catchme)'); 
+0

太好了。這是開箱即用的思想。我期待找到這些元素,而不是排除錯誤的元素。萬分感謝。 – 2010-06-17 16:31:40

0

會是這樣的工作嗎?

$('.catchme :not(.catchme)', start) 
+0

這是行不通的。它將從'.catchme'返回不是'.catchme'的所有*元素。 OP有一個名爲'nested'的元素將被返回,並且它實際上不會返回頂層的'.catchme'元素。 – user113716 2010-06-17 15:13:43

0

您可以使用.filter().parents()

$('.catchme').filter(function(){ 
    return $(this).parents('.catchme').length == 0; 
}; 

這將僅選擇那些沒有catchme元素作爲祖先那些catchme元素。