javascript - "INSPINIA"管理主题上的事件侧菜单

标签 javascript jquery inspinia

我想使用 JavaScript 突出显示侧栏菜单上的事件页面。我正在使用INSPINIA主题。

我尝试过使用 JavaScript,它对于普通菜单运行良好。但它不适用于子菜单。我想在子菜单中显示 in 类而不是 active 类。请检查我的代码并帮助我。

HTML

<nav class="navbar-default navbar-static-side" role="navigation">
   <div class="sidebar-collapse">
      <ul class="nav metismenu" id="side-menu">
         <li>
            <a href="dashboard.html"><i class="fa fa-th-large"></i><span class="nav-label">Dashboards</span></a>
         </li>
         <li>
            <a href="#"><i class="fa fa-building"></i><span class="nav-label">Company</span><span class="fa arrow"></span></a>
            <ul class="nav nav-second-level collapse">
               <li><a href="addcompany.html">Add Company</a></li>
               <li><a href="#">View Company</a></li>
            </ul>
         </li>
         <li>
            <a href="mailbox.html"><i class="fa fa-envelope"></i><span class="nav-label">Person</span><span class="fa arrow"></span></a>
            <ul class="nav nav-second-level collapse">
               <li><a href="addperson.html">Add Person</a></li>
               <li><a href="#">View Person</a></li>
            </ul>
         </li>
      </ul>
   </div>
</nav>

JavaScript

$(document).ready(function () {
    var url = window.location;
    // for sidebar menu but not for metismenu submenu
    $('ul.metismenu a').filter(function () {
        return this.href == url;
    }).parent().siblings().removeClass('active').end().addClass('active');
    // for metismenu which is like a submenu
    $('ul.nav-second-level a').filter(function () {
        return this.href == url;
    }).parentsUntil(".metismenu > .nav-second-level").siblings().removeClass('active').end().addClass('active');
});

预期输出

<li class="active">
   <a href="#"><i class="fa fa-building"></i><span class="nav-label">Company</span><span class="fa arrow"></span></a>
   <ul class="nav nav-second-level collapse in">
      <li><a href="addcompany.html">Add Company</a></li>
      <li><a href="#">View Company</a></li>
   </ul>
</li>

实际输出

<li class="active">
   <a href="#"><i class="fa fa-building"></i><span class="nav-label">Company</span><span class="fa arrow"></span></a>
   <ul class="nav nav-second-level collapse active">
      <li><a href="addcompany.html">Add Company</a></li>
      <li><a href="#">View Company</a></li>
   </ul>
</li>

最佳答案

我找到了答案。

$(function() {
    setNavigation();
});

function setNavigation() {
    var path = window.location.pathname;
    path = path[0] == '/' ? path.substr(1) : path; //it will remove the dash in the URL

    $("ul.metismenu a").each(function() {
        var href = $(this).attr('href');
        if (path.substring(0, href.length) === href) {
            $(this).closest('li').addClass('active');
        }
    });

    $("ul.metismenu .nav-second-level a").each(function() {
        var href = $(this).attr('href');
        if (path.substring(0, href.length) === href) {
            $(this).parent().parent().closest('li').addClass('active');
            $(this).closest('ul').addClass('in');
        }
    });
}

关于javascript - "INSPINIA"管理主题上的事件侧菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53029552/

相关文章:

javascript - 如何在 documents.ready 函数中通过 javascript 自动按下键(ctrl+shift+i)?

jquery - Bootstrap nav - 在桌面上保持展开并在移动设备上折叠

css - 如何更改 Inspinia 中左侧菜单的背景颜色

javascript - Highcharts 显示时间戳为错误日期

javascript - 捕获离开页面 - jQuery

javascript - 如何在 Angular 8 项目中使用 Satellite.js

javascript - 为什么 JQuery 和 Javascript DOM 方法会去除空格?

javascript - 无法获取跨度值

javascript - 在可滚动的 div 中禁用外部滚动