[英]Add active class to menu “parent” item if URL has a a /directory/ listing
[英]active class on menu and parent item
我的菜单有这个 HTML 代码:
<nav id="main-navigation" class="navigation-simple">
<ul>
<li><a href="/">Home</a></li>
<li><a class="active-nav" href="">About Us</a>
<ul>
<li><a class="active-nav" href="about">About</a></li>
<li><a href="testimonials">Testimonials</a></li>
<li><a href="meet-the-team">Meet The Team</a></li>
</ul>
</li>
</nav>
我已经添加了active-nav
类,但是当当前 URL 是链接的href
值时,如何在父项和子项上自动设置活动类?
为此,您需要 Java 脚本,jQuery 非常适合初学者!
可以这样做:
var url = window.location.href;
$( "nav li a" ).each(function(index) {
if (url.indexOf($(this).attr('href')) >= 0){
$(this).addClass('active-nav');
}
});
逐行 -
就像是:
$(function() {
$('#main-navigation a').each(function() {
if(this.href.indexOf(window.location.pathname) === 0) {
$(this).addClass('active-nav');
} else {
// case when something was set to active by the server
$(this).removeClass('active-nav');
}
});
});
会做的工作。
确保 if 条件对您的站点深层链接实现安全(例如,在导航中可以使用 GET 参数、锚点或具有相同路径名的多个域)。
您可以使用.filter()
方法找到适当的链接并添加所需的类:
$('#main-navigation li > a').removeClass('active-nav')
.filter(function() {
return location.href.indexOf(this.href) > -1;
})
.addClass('active-nav') //add class to matched element(s)
//add class to parent(s) of matched, if any
.each(function() {
$($(this).parents('a'), '#main-navigation').addClass('active-nav');
});
还记得关闭你的第一个ul
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.