jquery - 遍历树并查找具有指定类的元素

时间:2011-08-18 13:59:36

标签: javascript jquery

我认为closest()函数会为我做这个,但似乎没有。我有以下标记,我想用类触发器向所有父锚添加class

    <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>

我想选择我的目标 - 在此示例中,是最深的锚点,然后在其上方的每个class中添加a.trigger。最好的方法是什么?感谢。

3 个答案:

答案 0 :(得分:3)

以下示例使用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

编辑:

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

答案 1 :(得分:2)

您想要使用

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

使用.parents方法(遍历DOM树,而不是.parent,它只遍历一个级别。

答案 2 :(得分:0)

parents用于遍历。

我相信这应该有效:

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

但是对于兄弟姐妹,您需要使用siblings代替parents 例如,anchor锚点的#my_target标记被视为兄弟。