4

您好我正在尝试创建一个投资组合网站。为了不必为每个页面重新创建标题,我决定使用 PHPinclude函数添加它。我现在唯一的问题是当我单击一个链接导航到另一个页面时,活动链接没有分别改变。
包含的 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");                  
    });
 });

我知道问题在于每次页面加载时 - 它都会将活动类重置为第一个链接。我不知道的是:如何将活动类动态添加到页面匹配链接?

4

3 回答 3

6

你需要这个:

  $(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');
  });
于 2012-07-08T17:50:00.453 回答
1

尝试创建一个在页面加载时运行的函数,该函数选择与href页面相同的超链接。

或者,通过 AJAX 加载页面的主要内容,而不是传统的页面位置更改。JQuery 有一个很好的 AJAX 实现。在线搜索jquery ajax

另一种选择是在点击超链接时创建一个 cookie,并通过读取 cookie 来设置选定的一个。尽管这将非常不可靠(后退按钮、手动 url 输入等)。

于 2012-07-08T17:49:54.197 回答
1

简单的:

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 演示

于 2012-07-08T18:02:25.707 回答