使用jquery设置活动类

时间:2013-04-16 21:22:19

标签: jquery asp.net

我尝试使用以下javascript来设置活动类

var url = window.location.pathname,
                    urlRegExp = new RegExp(url == '/' ? window.location.origin + '/?$' : url.replace(/\/$/, '')); // create regexp to match current url pathname and remove trailing slash if present as it could collide with the link in navigation in case trailing slash wasn't present there
                // now grab every link from the navigation
                $('.page-sidebar a').each(function () {
                    // and test its normalized href against the url pathname regexp
                    if (urlRegExp.test(this.href.replace(/\/$/, ''))) {
                        $(this).addClass('active');
                    }
                });

问题是我需要在父<li>元素上设置它,而不是<a>

我的HTML菜单示例

<div class="page-sidebar nav-collapse collapse">
   <ul>
      <li>
          <div class="sidebar-toggler hidden-phone"></div>
      </li>
      <li class="start"> // HERE I NEED TO ADD CLASS ACTIVE
          <a href="/default.aspx">
          <i class="icon-home"></i>
          <span class="title">Dashboard</span>
          </a>
      </li>
<ul>

4 个答案:

答案 0 :(得分:2)

使用.closest()查找与所需选择器匹配的最近祖先/父级。这比使用直接父级更灵活,更安全,因为即使对HTML标记进行了某些类型的更改(例如在目标和父级之间插入了额外的标记层),它仍然可以继续工作。

$(this).closest("li").addClass("active");

答案 1 :(得分:1)

$(this).addClass('active');更改为$(this).parent().addClass('active');

答案 2 :(得分:1)

将其设置在父级上:

$(this).parent().addClass('active');

答案 3 :(得分:1)

使用nearest():

$(this).closest('li').addClass('active');