动态地在Navbar中设置活动类

时间:2015-12-02 03:12:28

标签: php include navbar

最初我有一个bootstrap导航栏,我将导航栏代码硬编码到我的每个html文件中。我设置用户当前正在手动查看的任何页面的选项卡的活动类,如下所示:

    <ul class="nav navbar-nav">
      <li class="active"><a href="homepage.html">Home</a></li>
      <li><a href="about.html">About</a></li>
      <li><a href="map.html">View Map</a></li>
      <li><a href="index.html">Submit Document</a><li>
      <li><a href="contact.html">Contact</a></li>
    </ul>

这很好用,但我意识到重复这样的代码是不好的做法,所以我把导航条代码放到一个单独的文件中,将我所有的html文件转换成php文件,并使用php include语句加载导航栏在每个页面中。然后我使用JavaScript试图动态设置活动类。但是,点击我的标签时,我无法显示活动课程。

<head>
    <link href="../css/navbar.css" type="text/css" rel="stylesheet" />
</head>

<!-- JAVASCRIPT TO TOGGLE ACTIVE CLASS-->
<script type="text/javascript">
  $(".nav a").on("click", function(){
  $(".nav").find(".active").removeClass("active");
  $(this).parent().addClass("active");
  });
</script>

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container-fluid">
  <div class="navbar-header">
    <button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <!-- Mobile collapse-->
        <span class="icon icon-bar"></span>
        <span class="icon icon-bar"></span>
        <span class="icon icon-bar"></span>
    </button>
    <a class="navbar-brand" href="homepage.html">
      <img src="../images/pksoilogo.png" id="logo">
    </a>
  </div>
  <div class="collapse navbar-collapse"> <!-- Mobile collapse/Dropdown-->
    <ul class="nav navbar-nav">
      <li><a href="homepage.php">Home</a></li>
      <li><a href="about.php">About</a></li>
      <li><a href="map.php">View Map</a></li>
      <li><a href="index.php">Submit Document</a><li>
      <li><a href="contact.php">Contact</a></li>
    </ul>
  </div>
</div>
</nav>

有关如何纠正JavaScript以解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

编辑 - 抱歉,我还没有读过您想要修复Javascript的部分。希望有人能尽快为您的问题提供JS解决方案!

这是一种解决方法。

<ul class="nav navbar-nav">
  <li <?php if (basename($_SERVER['PHP_SELF']) == 'homepage.php') echo 'class="active"' ?>><a href="homepage.php">Home</a></li>
  <li <?php if (basename($_SERVER['PHP_SELF']) == 'about.php') echo 'class="active"' ?>><a href="about.php">About</a></li>
  <li <?php if (basename($_SERVER['PHP_SELF']) == 'map.php') echo 'class="active"' ?>><a href="map.php">View Map</a></li>
  <li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') echo 'class="active"' ?>><a href="index.php">Submit Document</a></li>
  <li <?php if (basename($_SERVER['PHP_SELF']) == 'contact.php') echo 'class="active"' ?>><a href="contact.php">Contact</a></li>
</ul>

显然,这不是最干净的方式,但它很容易。您还可以创建一个可以调用的功能,使其看起来更好。