[英]Adding active class to current page in nav with jQuery
我正在嘗試在標題的當前頁面導航鏈接中添加“活動”類。 我取得了一些進展,但是遇到了一個小錯誤,希望對您有所幫助。 我知道答案很明顯,但是,我是jQuery / Java的新手,我很難自行找到它。
這是我的導航HTML結構:
<nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="nav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="/" class="nav-link">Me</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/work">Work</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/play">Play</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact">Contact</a>
</li>
</ul>
</nav>
很簡單。 這是jQuery代碼:
$(function() {
$('nav li a[href^="/' + location.pathname.split("/")[1] + '"]').addClass('active');
});
該代碼在內部頁面上有效,但是,我遇到了一個問題,其中在主頁('Me',href =“ /”)上,代碼將活動類添加到所有導航鏈接。
我認為,如果我使用href =“ / work /”(在所有鏈接的末尾添加/),則該問題將得到解決,但是,當我這樣做時,這些鏈接將不再起作用,因為該站點隨后嘗試轉到www.sitename.com/work/.php。
這是一個簡單的.htaccess或jQuery修復程序,但是我不確定哪個修復程序或如何實現它。
謝謝!
發生這種情況是因為您使用的是^ =選擇器。 這意味着'startWith',因此,由於所有網址都以'/'開頭,因此將'active'類添加到所有網址中。
用相等的選擇器替換它,它應該可以工作。
$('nav li a[href="/' + location.pathname.split("/")[1] + '"]').addClass('active');
一種更簡單的方法是將鏈接的href
屬性與頁面網址進行比較
$('nav li a').filter(function(){
return this.href === location.href;
}).addClass('active');
盡管href 屬性僅包含路徑,但DOM中的href 屬性包含完整網址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.