jquery - 遍历树并找到指定类的元素

问题描述:

我认为closer()函数会为我做这件事,但看起来不是。我有以下的标记,我想一个类添加到所有父锚与类触发:jquery - 遍历树并找到指定类的元素

<ul> 
    <li class="selected"> 
     <a class="trigger" href=""></a> 
     <a href=""></a> 
     <ul> 
     <li class="selected"> 
      <a class="trigger" href=""></a> 
      <a href="" id = "my_target"></a> 
     </li> 
     </ul> 
    </li> 
    </ul> 

我要选择我的目标 - 在这个例子中,最深的锚,然后添加一个类每一个触发其优势。什么是最好的方法来做到这一点?谢谢。

下面是使用的jQuery.parents()的组合(以获得所述含<li>标签),然后jQuery.children()与类触发的获取<a>标记的示例:

$(document).ready(function() { 
    $('#my_target').click(function(e) { 
     $(this).parents('li.selected').children('a.trigger').addClass('myclass'); 
     e.preventDefault(); 
    }); 
}); 

jsfiddle example

EDIT :

注意$().parents()遍历树,但$().children()只遍历一个级别。要收集元素的所有后代,请使用$().find()

+0

我会尽快添加一个jsfiddle示例,只要他们重新联机:) –

+0

http://jsbin.com/oxeyiz/edit#javascript,html,live –

+0

不知道jsbin,谢谢!没有jsfiddle那么干净,但它会在一个捏。 –

你想用

$('#my_target').parents('a.trigger'); 

使用.parents方法(遍历所有的方式DOM树,而不是.parent,只穿过一个级别。

parents是用于遍历。最多

我认为这应该工作:

$('#my_target').parents('.trigger').addClass('myclass'); 

但是,对于兄弟姐妹,您需要使用siblings而不是parents 例如,与#my_target锚点一起使用的anchor标签被认为是兄弟姐妹。