我有这个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
}
});
答案 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');