2011-03-02 63 views
7

我的DOM看起來是這樣的:jquery:如何找到第二個最接近的anscestor?

<li> 
    <li><a class="editEntity>Edit</a></li> 
    <li><a class="deleteEntity>Delete</a></li> 
</li> 

當「編輯」所使用的點擊,我想改變外<li> to <li class="selected>.

I tried something like this, but this is not working: 
    $('li a.editEntity').live('click', function() { 
     $(this).closest('li').closest('li').addClass('selected'); 
    }); 

任何幫助表示讚賞。

+0

在所有孩子中循環,並在第二個孩子中停止(並且應用任何你想要的)。我會看看jQuery的.each()我將psot示例如下 – 2011-03-02 11:01:14

回答

13

上去父:

$(this).closest('li').parent().closest('li').addClass('selected'); 

它不與當前元件工作,因爲closest開始,所以如果你把它的東西,選擇相匹配,你回來了同樣的事情你開始。

Live example

或者你可以使用parents:eq selector

$(this).parents("li:eq(1)").toggleClass("selected"); 

注意:eq使用基於0的索引,所以:eq(1)li

Live example

你引述的HTML是無效的,但(一lican't directly contain an li);我假設你的意思是:

<li> 
    <ul> 
     <li><a class="editEntity>Edit</a></li> 
     <li><a class="deleteEntity>Delete</a></li> 
    </ul> 
</li> 

...或相似。

0

下面我之前的評論..這裏是承諾的例子......第二個索引

進一步信息可以在這裏找到

http://api.jquery.com/each/

1

:)

$('li').each(function(index) { 
    alert(index + ': ' + $(this).text()); 
    }); 

停在你可以使用

$('li a.editEntity').live('click', function() { 
    $(this).parents('li').addClass('selected'); 
}); 
+1

這會將它添加到父'li'的* all *,包括'a'的直接父項。 – 2011-03-02 11:32:03