簡體   English   中英

如何將活動狀態類動態更改(添加)到導航鏈接

[英]How to dynamically change (add) the active state class to a navigation link

嗨,我正在嘗試創建一個投資組合網站。 為了不必為每個頁面重新創建標題,我決定使用PHP include函數添加它。 我現在唯一的問題是,當我單擊鏈接導航到另一個頁面時, 活動鏈接不會分別更改。
包含的HTML

<ul id="main-menu">
     <li><a href="index.php" class="active">home</a></li>
     <li><a href="about.php">about us</a></li>
     <li><a href="portfolio.php">portfolio</a></li>
     <li><a href="contact.php">contact</a></li>
</ul>

使用Javascript:

 $(document).ready(function(){
    var $menu = $("ul#main-menu li a");                
    $menu.click(function(){
        $menu.each(function(){
            $(this).removeClass("active");
        });
        $(this).addClass("active");                  
    });
 });

我知道問題是每次頁面加載時 - 它會將活動的類重置為第一個鏈接。 我不知道的是:如何動態地將活動類添加到頁面匹配鏈接?

你需要這個:

  $(document).ready(function(){
        var i = document.location.href.lastIndexOf("/");
        var currentPHP = document.location.href.substr(i+1);
        $("ul#main-menu li a").removeClass('active');
        $("ul#main-menu li a[href^='"+currentPHP+"']").addClass('active');
  });

嘗試創建一個在頁面加載上運行的函數,該函數選擇與頁面具有相同href的超鏈接。

或者,通過AJAX加載頁面的主要內容,而不是傳統的頁面位置更改。 JQuery有一個很好的AJAX實現。 在線搜索jquery ajax

另一種方法是在超鏈接上創建一個cookie,並通過讀取cookie來設置所選的cookie。 雖然這將是非常不可靠的(后退按鈕,手動URL輸入等)。

簡單:

var link = document.location.href.split('/').slice(-1);   // retrieve page name
$('#main-menu li a.active').removeClass('active');        // remove class 'active'
$('#main-menu li a[href$="'+link+'"]').addClass('active');// and add it to a matching link

jsBin演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM