javascript - self 检测每个页面单击的菜单项的最佳实践是什么?

标签 javascript jquery html navigation navbar

如果有很多页面共享同一个菜单

    include_once('common-menu.php');

但是不同页面的菜单应该有一些不同

页面A

  <ul class="nav navbar-nav">
    <li class="active"><a href="a.php">A Page</a></li>
    <li><a href="b.php">B Page</a></li>
  </ul>

B页

  <ul class="nav navbar-nav">
    <li><a href="a.php">A Page</a></li>
    <li class="active"><a href="b.php">B Page</a></li>
  </ul>

我只知道两种解决方案。

解决方案1:服务器端检测URL然后确定输出

  <ul class="nav navbar-nav">
    <li class="<? echo 'active'; ?>"><a href="a.php">A Page</a></li>
    <li class=""><a href="b.php">B Page</a></li>
  </ul>


  <ul class="nav navbar-nav">
    <li class=""><a href="a.php">A Page</a></li>
    <li class="<? echo 'active'; ?>"><a href="b.php">B Page</a></li>
  </ul>

方案二:使用js/jquery检测URL,页面加载后通过js/jquery更改class。

解决这个问题的最佳实践是什么?

是否有任何非编程解决方案,以便我不需要使用 if/case/map 来确定事件项?

最佳答案

有一个几乎纯 CSS 的解决方案,但它并不理想。将 url 作为父 id 输出,并使用选择器来处理其余部分。这样做的缺点是,如果您需要添加大量导航项,它会变得乏味。使用上述解决方案之一会更好。

PHP

<div id="<? basename($_SERVER['SCRIPT_NAME'], ".php") ?>">
    <ul class="nav navbar-nav">
        <li><a href="a.php">A Page</a></li>
        <li><a href="b.php">B Page</a></li>
    </ul>
</div>

CSS

#a .nav a[href$='a.php'],#b .nav a[href$='b.php']{    
    color:red;
}

关于javascript - self 检测每个页面单击的菜单项的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878040/

相关文章:

javascript - 除了使用多行变量之外,还有其他方法可以存储 HTML 代码块吗?

javascript - AJAX 后 - Codeigniter

Javascript window.open 在 Win7 x64 上的 32 位 IE8 中返回 null

javascript - 减少代码行

jquery kwicks 调整我的图像大小

javascript - 带有ajax和甜蜜警报的调用功能

html - 如何使div中的背景图像响应

JavaScript 随机数一/零实现

javascript - PHP - 像数组一样解析对象的属性

html - Footer 和 Jumbotron 之间的空白