0

我正在使用 Bootstrap (AdminLTE),我想让当前页面的菜单项处于活动状态。问题是,我不知道该怎么做。我确实有一些解决方案(除了在每个 php 文件中更改它),比如为每个链接添加一个 IF 语句,这将是一个糟糕的解决方案(我认为)。

      <ul class="sidebar-menu">
        <li class="header">HOOFD MENU</li>
        <li class='treeview'>
          <a href='#'>
            <i class='fa fa-dashboard'></i> <span>Dashboard</span>
            <span class='pull-right-container'>
              <i class='fa fa-angle-left pull-right'></i>
            </span>
          </a>
          <ul class='treeview-menu'>
            <li><a href='account.php'><i class='fa fa-circle-o'></i>Account</a></li>
          </ul>
        </li>
</ul>

以上是菜单的一部分。所以菜单项(在本例中为仪表板)和子菜单项都必须变为活动状态。

提前致谢!

4

4 回答 4

5

尝试这个。这是从其他引导管理模板复制的,并针对 AdminLTE 进行了修改

    <script>
    $(document).ready(function() {
        var url = window.location; 
        var element = $('ul.sidebar-menu a').filter(function() {
        return this.href == url || url.href.indexOf(this.href) == 0; }).parent().addClass('active');
        if (element.is('li')) { 
             element.addClass('active').parent().parent('li').addClass('active')
         }
    });
    </script>
于 2017-03-10T09:22:22.287 回答
4

此解决方案适用于子级菜单。需要 jQuery

<script type="text/javascript">
    $(document).ready(function () {
        var url = window.location;
        var element = $('ul.sidebar-menu a').filter(function () {
            return this.href == url || url.href.indexOf(this.href) == 0;
        });
        $(element).parentsUntil('ul.sidebar-menu', 'li').addClass('active');
    });
</script>
于 2017-05-12T20:18:51.450 回答
2

在一个简单的行中:

$("ul.sidebar-menu li a[href='"+document.location.pathname+"']").parents('li').addClass('active');
于 2018-02-28T14:43:33.430 回答
0

因此,您应该始终检查以确保元素存在,以免出现任何错误,并且您可以使用 jQuery 的数据属性选择器轻松定位正确的链接。

var href = window.location.pathname;

if( $(".sidebar-menu a[href='"+href+"']").length ) {
    $(".sidebar-menu a[href='"+href+"']").parent('li').addClass('active');
}

如果您使用的是绝对 url,您可能需要在 var 中从 .pathname 切换到 .href

于 2019-05-01T17:31:18.840 回答