单击一次,将侧边栏活动菜单项设置为class =“ active”吗?

Lew*_*uce 1 jquery ruby-on-rails

我在这里最近发表了一篇文章,并在解决第一个问题后将其关闭,但仍然无法修复此问题。

我有一个带有“客户”,“项目”等链接的边栏。它们链接到相应的页面。但是,我希望能够为我单击的菜单项设置,无论是“项目”还是“客户”。

这是侧边栏HTML(轨道上的红宝石):

  <div id="sidebar" class="sidebar-offcanvas">
      <div class="col-md-12">
        <h3></h3>
        <ul class="nav nav-pills nav-stacked">
            <li><%= link_to 'Customer Management', customers_path %></li>
            <li><%= link_to 'Project Management', projects_path %></li>
        </ul>
      </div>
  </div>
Run Code Online (Sandbox Code Playgroud)

这是HTML下方的JavaScript:

<script type='text/javascript'>
    $(document).ready(function() {
      $('#sidebar .nav-pills a').click(function() {
        $('#sidebar .nav-pills li.active').removeClass('active');
        $(this).parent().addClass('active');
      });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

当我单击“客户”页面时,没有任何反应。但是,如果将第一个<li>设置为活动类,则可以看到class =“ active” css样式应用于它。

这是它背后的CSS:

body,html,.row-offcanvas {
  height:100%;
}

body {
  padding-top: 50px;
}

#sidebar {
  width: inherit;
  min-width: 220px;
  max-width: 220px;
  background-color:#E6E5E5;
  float: left;
  height:100%;
  position:relative;
  overflow-y:auto;
  overflow-x:hidden;
}
#main {
  height:100%;
  overflow:auto;
}


/*
 * off Canvas sidebar
 * --------------------------------------------------
 */
@media screen and (max-width: 768px) {
  .row-offcanvas {
    position: relative;
    -webkit-transition: all 0.25s ease-out;
    -moz-transition: all 0.25s ease-out;
    transition: all 0.25s ease-out;
    width:calc(100% + 220px);
  }

  .row-offcanvas-left
  {
    left: -220px;
  }

  .row-offcanvas-left.active {
    left: 0;
  }

  .sidebar-offcanvas {
    position: absolute;
    top: 0;
  }
}

#sidebar a:hover {
    background-color:#6699FF;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。我已经为此战斗了一个多小时。

trn*_*son 5

这是一些JavaScript,可用于向与当前URL匹配的导航项中添加类:

// Get current page and set current in nav
$(".nav>li").each(function() {
    var navItem = $(this);
    if (navItem.find("a").attr("href") == location.pathname) {
      navItem.addClass("active");
    }
});
Run Code Online (Sandbox Code Playgroud)

该代码几乎应该在您的页面中按原样工作。基本上,它只会遍历,和li中的所有项目nav,并且如果找到一个具有当前页面超链接的项目,它将active对列表项目应用一个类。