jQuery “active” 父级的类分配

标签 jquery

我的主导航中有这个 html:

<div id="navigation">  
  <ul>
     <li>
       <a href="/contact">contact us</a>
     </li>
   <li>
      <a href="/projects">projects</a>       
   </li>
  </ul>
 </div>

我想标记事件链接,所以我使用这个 jquery:

$("div#navigation").find("a[href='" + top.location.pathname + "']").each(function ()
 {
   $(this).addClass("active")
 })

虽然它适用于像domain.com/projects或domain.com/contacts这样的URL,
我对更深层次的 URL 有疑问,以 domain.com/projects/proj-1 为例。
我希望当我转到更深的 URL 时,它将父 URL (domain.com/projects) 标记为事件。我该怎么做?

谢谢!

最佳答案

首先,在您的示例中,您不必使用 .each() 方法,因为您可以像这样直接分配类

$("div#navigation").find("a[href='" + top.location.pathname + "']").addClass("active")

对于问题使用

$("div#navigation").find("a").filter(function(){
    var href =  $(this).attr('href');
    return href!='/' && href !='#' && top.location.pathname.indexOf( href )==0 ;
}).addClass("active");

编辑:进行了一些小更改以满足评论的问题

关于jQuery “active” 父级的类分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542954/

相关文章:

javascript - 将 ajax 响应分配给全局变量

javascript - SAPUI5 - 数字格式本地化

jquery - 绑定(bind)日期选择器事件

javascript - 无法获得下拉 3 栏菜单以具有背景或关闭

javascript - 图片幻灯片不淡出然后淡入?

jquery - 固定标题,相关内容问题

jquery - 定位 <h1> 元素中的最后一个单词

javascript - 获取表格单元格内容以在页面上向上移动

jquery - 在没有父选择器或其他选择器的情况下需要 "jQuery closest"的帮助

jquery - ASP.NET MVC、JSON 和非 JavaScript 客户端