【问题标题】:How can I make the sidebar menu keep open?如何使侧边栏菜单保持打开状态?
【发布时间】:2021-01-21 05:48:53
【问题描述】:

我正在使用 adminlte 3。

<aside class="main-sidebar sidebar-dark-primary elevation-4">
    <!-- Brand Logo -->
    <a href="http://localhost:84/mysite/" class="brand-link">
        <img src="http://localhost:84/mysite/assets/icon/instagram.png" alt="AdminLTE Logo"
             class="brand-image img-circle elevation-3" style="opacity: .8">
        <span class="brand-text font-weight-light"> AClub Backend </span>
    </a>

    <div class="sidebar">
        <div class="user-panel mt-3 pb-3 mb-3 d-flex">

            <div class="info">
                <a href="#" class="d-block">Boby Kurniawan <br> Developer U001 </a>
            </div>
        </div>

        <nav class="mt-2">
            <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
                data-accordion="false">


                <li class="nav-item has-treeview">
                    <a href="http://localhost:84/mysite/#" class="nav-link ">
                        <i class="nav-icon fas fas fa-list"></i>
                        <p>Master <i class="right fas fa-angle-left"></i>
                        </p>
                    </a>

                    <ul class="nav nav-treeview">
                        <li class="nav-item">
                            <a href="http://localhost:84/mysite/Member/" class="nav-link ">
                                <i class="far fa-circle nav-icon"></i>
                                <p>Members</p>
                            </a>
                        </li>
                        <li class="nav-item">
                            <a href="http://localhost:84/mysite/Group/" class="nav-link ">
                                <i class="far fa-circle nav-icon"></i>
                                <p>Group</p>
                            </a>
                        </li>
                    </ul>
                </li>


                <li class="nav-header"></li>
                <li class="nav-item">
                    <a href="http://localhost:84/mysite/Loginform/goToportal" class="nav-link">
                        <i class="nav-icon fas fa-undo-alt"></i>
                        <p>
                            Back to menu category
                        </p>
                    </a>
                </li>


                <li class="nav-item">
                    <a href="http://localhost:84/mysite/welcome/logout" class="nav-link">
                        <i class="nav-icon fas fa-sign-out-alt"></i>
                        <p>
                            Logout
                        </p>
                    </a>
                </li>

            </ul>
        </nav>
    </div>
</aside>

现在,当我打开我的页面(以组为例)时,url 将更改为 http://localhost:84/mysite/Group/,子菜单会像这样打开

这就是我的工作

var url = window.location;
$('ul.nav-sidebar a').filter(function() {
    return this.href == url;
}).addClass('active');

$('ul.nav-treeview a').filter(function() {
    return this.href == url;
}).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');

但是当我打开另一个位于Group 路径内的页面时。示例http://localhost:84/mysite/Group/detail/1

我的菜单变成了这样

所以,我的问题是如何保持菜单打开?提前感谢,对不起我的英语。

【问题讨论】:

    标签: javascript jquery css adminlte


    【解决方案1】:

    这应该可以工作

    var url = window.location.href;
    
    $('ul.nav-sidebar a').filter(function() {
        var rgx = new RegExp($(this).attr("href"), "gi");
        return url.match(rgx);
    }).addClass('active');
    
    $('ul.nav-treeview a').filter(function() {
        var rgx = new RegExp($(this).attr("href"), "gi");
        return url.match(rgx);
    }).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');
    

    【讨论】:

      【解决方案2】:

      我猜你可以做到这一点

      var url = window.location.url;
      
      
      $('ul.nav-treeview a').filter(function() {
          return url.includes(this.href);
      }).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');
      
      

      【讨论】:

      • var url = window.location; 不是字符串,所以在使用includes 之前应先将其更改为字符串var url = window.location.toString(); 或将返回更改为return url.toString().includes(this.href);,否则它将返回undefined跨度>
      • 嗨,当我使用 toString() 时,菜单现在一直打开。但是 addClass active 不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 2011-11-05
      相关资源
      最近更新 更多