jquery - 匹配来自 2 个数组的信息,如果匹配则添加类

标签 jquery html css

我有一些存在于 ul 中的元素,我想将它们与当前 URL 位置进行比较,如果匹配,则将一个类(事件)添加到特定的 li。我想我有所有的部分,但我似乎无法让他们完成所有工作。一起。我正在获取当前路径中的所有元素,获取导航结构中的所有元素(但还没有使用它,因为我不确定如何使用)。现在我正在使用一个开关将它添加到 li:child(n),但这似乎非常严格。有没有更有效的方法来实现我想要做的事情?

<ul class="nav-items">
   <li><a href="/About">About</a></li>
   <li class="active"><a href="/News">News</a></li>
   <li><a href="/Programs">Programs</a></li>
   <li><a href="/Public-Policy">Public Policy</a></li>
   <li><a href="/Events">Events</a></li>
   <li><a href="/Benefits">Benefits</a></li>
   <li><a href="/Education">Education</a></li>
</ul>

JS:

  var pathArray = window.location.pathname.split( '/' );
  var navArray = $('.nav-items li a').map(function(i, el) {
    return $(el).text();}).get();//<--not sure how to use this just yet

  switch(pathArray[1]) {
    case "About":
        $('.nav-items li:nth-child(1)').addClass('active');
      break;
      case "News":
        $('.nav-items li:nth-child(2)').addClass('active');
      break;
      case "Programs":
        $('.nav-items li:nth-child(3)').addClass('active');
      break;
      case "Public-Policy":
        $('.nav-items li:nth-child(4)').addClass('active');
      break;
      case "Events":
        $('.nav-items li:nth-child(5)').addClass('active');
      break;
      case "Benefits":
        $('.nav-items li:nth-child(6)').addClass('active');
      break;
      case "Education":
        $('.nav-items li:nth-child(7)').addClass('active');
      break;
  }

最佳答案

您应该使用 jQuery 的 .eq() 方法,因为它是从零开始的。然后可以将其输入路径名数组中的索引(也是从零开始的)。

请注意,这不适用于 Public Policy 元素,因为 URL 将为 Public-Policy,并且不会匹配。您可能想尝试比较 URL。

var pathArray = window.location.pathname.split('/');
pathArray = 'example.com/About'.split('/'); // because snippets don't have your URL
var navArray = $('.nav-items li a').map(function(i, el) {
  return $(el).text();
}).get();

$('.nav-items li').eq(navArray.indexOf(pathArray[1])).addClass('active');
.active {
  color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="nav-items">
   <li><a href="/About">About</a></li>
   <li><a href="/News">News</a></li>
   <li><a href="/Programs">Programs</a></li>
   <li><a href="/Public-Policy">Public Policy</a></li>
   <li><a href="/Events">Events</a></li>
   <li><a href="/Benefits">Benefits</a></li>
   <li><a href="/Education">Education</a></li>
</ul>

关于jquery - 匹配来自 2 个数组的信息,如果匹配则添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34295279/

相关文章:

javascript - Firefox 上错误的 mouseenter 事件

jquery - jquery 模板中的 javascript 函数

javascript - 如何向 jQuery 插件添加实用方法?

jquery - 如何在将来生成的 DOM 上使用 Jcrop() 进行 jquery?

css - 打印时调整 DIV 大小以适合页面宽度

jquery - 如何使用jquery在树结构中添加子元素

jquery - 在新窗口上书写 - 新行丢失

html - 将 HTML 元素扩展到浏览器高度?

javascript - JQuery 为文档就绪的嵌入字体提供了不正确的宽度

html - 如何在 HTML 中制作垂直线