2013-05-21 83 views
0

我有以下HTML結構:jQuery的預防選擇嵌套的div

<div class="comment"> 
    ... 
    <div class="comment"> 
    </div> 
    ... 
</div> 

,我需要選擇帶班「評論」的父元素,但只有主之一,而不是嵌套的。

的問題是,我不能使用這樣的事情:

$("parent > .comment") 

因爲主要是變量給出。

+0

你想添加一個監聽器,它還是什麼? – Sedz

回答

1

您可以使用filter方法:

$('div.comment').filter(function(){ 
    return !$(this).parents('.comment').length; 
}); 

或者:

$('div.comment').filter(function() { 
    return !$(this.parentNode).closest('.comment').length; 
}); 

http://jsfiddle.net/HYNAb/

+0

不,我撤回了我以前的評論:['parentsUntil()'是一個愚蠢的想法](http://jsperf.com/test-of-parents-againsts-parentsuntil)。 –

+0

@DavidThomas你是對的,'父母'是_overkill_,我用'最近'方法更新了答案。 – undefined

+0

http://jsfiddle.net/BDxA5/3/ 在這裏可以防止在「嵌套評論」觸發mouseenter事件? – domagojk

0
$('.comment').filter(function(){ 
    if($(this).closest('.comment').length > 0) 
    return false; 
}) 
0

你可以嘗試這樣的事:

$("div.comment").not("div.comment > div.comment") 
0

給您所呈現的結構,只用一個嵌套的水平,這個工程:

$(".comment:has(.comment)") 

它選擇的是具有類子元素與comment類只元素comment

另外,如果您想選擇與comment類元素嵌套的div,你可以這樣做:

$(".comment:has(div)") 
0

前提是嵌套的有二矩形的孩子,你應該能夠使用:

$('.comment .comment').parent(); 
0

嘗試使用parents

$('.comment').parents('.comment');