【问题标题】:Navbar active state not correctly synchronized导航栏活动状态未正确同步
【发布时间】:2014-08-04 16:47:07
【问题描述】:

我的菜单不起作用。例如,当我单击购物车时,活动菜单仍然是主页。似乎是什么问题?谢谢!

<html lang="en"><head>
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
            <script src="bootstrap/jquery.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
  </head>

  <body>

    <div class="navbar navbar-default navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="home.php">company</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="home.php"><i class="glyphicon glyphicon-home"></i><span>&nbsp;Home</span></a></li>
            <li><a href="cart.php"><i class="glyphicon glyphicon-shopping-cart"></i><span>&nbsp;Cart</span></a></li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="register.php"><i class="glyphicon glyphicon-registration-mark"></i><span>&nbsp;Register</span></a></li>
            <li class="active"><a href="login.php"><i class="glyphicon glyphicon-user"></i><span>&nbsp;Login</span></a></li>
          </ul>
        </div>
      </div>
    </div>
</body>
</html>


这是演示:http://jsfiddle.net/47r5Q/

【问题讨论】:

  • 您需要根据需要添加/删除active 类。 Bootstrap 不会为你这样做。这可以通过服务器端代码、JS 代码或仅通过编辑 HTML 来完成——完全取决于最适合您的方式。
  • 您不需要像在小提琴中那样复制粘贴引导程序。您可以将其添加为外部资源。使其更易于阅读:jsfiddle.net/47r5Q/1

标签: jquery html twitter-bootstrap navbar


【解决方案1】:

有多种方法可以解决这个问题正如@Blazemonger 所提到的,您应该实现自己的逻辑。你可以做这个服务器端或客户端。因为不知道你在服务器端用什么,所以我会展示如何用jQuery轻松解决。

想法是检查当前 url,如果当前 url == 导航 url,则添加类处于活动状态。

$(document).ready(function()
{
    $('.navbar-nav > li > a').each(function(i, a)
    {
        var $a = $(a);
        var url = $a.attr('href');
        if(location.pathname.indexOf(url) == 1)
        {
            $a.parent().addClass('active');
        }
        else
        {
            $a.parent().removeClass('active');
        }
    });
});

location.pathname 返回/url-path,因此在您的示例中是/login.php。要与 login.php 匹配,您需要检查 url 是否从第二个字符开始(跳过 /)。如果您更新您的 url 并在它们前面加上 /,那么您可以将索引从 1 更改为 0 以使其工作。希望这是有道理的。

这是非常简单的代码(当然,你可以做得更好),但它是一个如何使它工作的简单示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2019-10-10
    • 2014-08-22
    • 2013-09-06
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多