![](/img/trans.png)
[英]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.