javascript - 根据 url 为菜单列表添加事件类

标签 javascript jquery

我正在尝试添加基于 urlactive 类,以显示单击了哪个 li

pageUrl = location.pathname;
$('#sidebar-left nav li.active').removeClass("active");
if (pageUrl) {
  $('nav li:has(a[href="' + pageUrl + '"])').addClass("active");
}

这是我在 init() 方法中尝试过的。
我正确获取了 pageUrl。但无法为单击的 li 添加事件类。

html:

<div id="sidebar-left" class="col-xs-2 col-sm-2">
            <ul class="nav main-menu">
                <li class="dropdown ng-scope" ng-repeat="parent in menu">
                    <a href="/employee/Home" class="dropdown-toggle" ng-click="tabName(parent.name)">
                        <i class="fa fa-home"></i>
                        <span class="hidden-xs ng-binding">Home</span>
                    </a>                       
                </li>
                <li class="dropdown ng-scope" ng-repeat="parent in menu">
                    <a href="/documents/doc_details" class="dropdown-toggle" ng-click="tabName(parent.name)">
                        <i class="fa fa-file-text"></i>
                        <span class="hidden-xs ng-binding">Documents</span>
                    </a>                       
                </li>
                <li class="dropdown ng-scope" ng-repeat="parent in menu">
                    <a href="#" class="dropdown-toggle" ng-click="tabName(parent.name)">
                        <i class="fa fa-money"></i>
                        <span class="hidden-xs ng-binding">Pay &amp; Benifits</span>
                    </a>
                    <ul class="dropdown-menu">
                       <li ng-repeat="child in parent.children" class="ng-scope">
                            <a href="/pay/paymanagement" ng-click="tabName(child.name)" class="ng-binding">slips</a>
                        </li>
                    </ul>
                </li>                    
            </ul>
        </div>

注意: 我只能使用 url 添加 active 类。因为每个 li 都有不同的页面,所以每当我点击 li 时,页面就会刷新。所以我不能 css/onclick/.click 这里。

请给我一些建议。

最佳答案

当您设置 href url 时,它会自动转换为 JavaScript 中的完整 URL。所以你的代码中的路径名将不起作用。相反,让我们使用 jquery 中的 filter() 方法。

$(function() {
    $('#sidebar-left nav li.active').removeClass("active");
    $('#sidebar-left nav li a').filter(function(){
        return this.href.indexOf(window.location.href) !== -1;
    }).parent().addClass("active");
});

关于javascript - 根据 url 为菜单列表添加事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48375774/

相关文章:

javascript - 点击更改谷歌地图标记

javascript - 从不同文件调用 JavaScript 构造函数方法 - Rails

javascript - 在 Controller 中使用 ng-model 范围值未定义

javascript - 输入类型范围输出不适用于动态 ID

jquery - 如何更改 fullcalendar 中本周的背景颜色 http ://arshaw. com/fullcalendar/

javascript - Document.createElement ("br") 无法多次调用 appendChild

javascript - 使用 Devbridge Autocomplete,有没有办法检测到没有结果?

javascript - 如何调整 iframe 的大小以适应 iframe 内容的高度?

javascript - 如何在中间加速设定间隔过程并在结束时变慢

javascript - 在使用 bootstrap/jquery 加载图像时制作进度条