父母的父母()

时间:2015-01-18 20:45:47

标签: jquery

我有这个ul树列表。

<ul class="sidebar-menu" id="nav-accordion">
                  <li  class="sub-menu">
                      <a href="file0.asp">
                          <i class="fa fa-dashboard"></i>
                          <span>Dashboard</span>
                      </a>
                  <ul class="sub">
                      <li><a  href="file.html">Pricefile</a></li>
                      <li><a href="file2.html">Pricefile</a></li>
                      <li><a  href="file3.html">Pricefile</a></li>
                  </ul>

                  </li>
              </ul>

我有这个脚本来定位当前页面,并设置将当前li类添加到.active。到目前为止一切都很好。

但我还需要在我的..上设置课程.class .active。 我怎么能用父函数做到这一点?

var str=location.href.toLowerCase();
    $("#sidebar li a").each(function() {
    if (str.indexOf(this.href.toLowerCase()) > -1) {    
    $(this).parent().addClass("active");
    $(this).parent().parent().parent('a').addClass("active"); // THIS LINE
    }
});

1 个答案:

答案 0 :(得分:2)

你做得对,只是parent()在dom树上。

但是,我建议使用parent().parent().parent().parent()docs)而不是使用closest()等,它会在dom树中搜索匹配元素。例如

$('li.active').closest('ul').addClass('active');

编辑:

如果您尝试在元素中获取某些内容,则可以使用find()。它可能是这样的:

$('li.active').find('a').addClass('active');

编辑:

啊,对不起,你会去:

$('li.active').closest('li').find('a:first-child').addClass('active');

或者

$(this).closest('.sub-menu').find('a:first-child').addClass('active');