【发布时间】:2019-07-24 07:48:42
【问题描述】:
这是我的菜单
<ul class="sidebar-menu" id="navigation-menu">
<li class="active"><a class="nav-link" href="/"><i class="fas fa-home"></i><span>Home Page</span></a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link has-dropdown"><i class="fas fa-cog"></i><span>Configuration</span></a>
<ul class="dropdown-menu">
<li><a class="nav-link" href="/Configuration/AccountCodes">Account Codes</a></li>
<li><a class="nav-link" href="/Configuration/Branches">Branches</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link has-dropdown"><i class="fas fa-person-booth"></i><span>Directory</span></a>
<ul class="dropdown-menu">
<li><a class="nav-link" href="/Directory/Users?Role=Administrator">Administrators</a></li>
<li><a class="nav-link" href="/Directory/Users?Role=Manager">Managers</a></li>
<li><a class="nav-link" href="/Directory/Users?Role=Agent">Agents</a></li>
</ul>
</li>
</ul>
这是我的 Jquery,当我选择配置下拉菜单下的 AccountCodes 时,它应该只将父列表项设置为活动状态。但是,目录父级也设置为活动。我不知道如何直接选择它。
另外,由于我的 URL 结构,我无法继续使用 endWith。是否有基于 url 设置活动类的替代方法?目前,如果我选择 AccountCodes 或 Branches,它会正确地将 Configuration 下拉项设置为活动状态。但是,如果我选择代理,则根本不会选择任何内容,因为它的 url 以 ?Agent 而不是 Users 结尾
<script>
$(document).ready(function () {
var current = location.pathname;
console.log(current);
$("#navigation-menu a").each(function () {
var $this = $(this);
console.log($this.attr('href'));
if ($this.attr('href').endsWith(current)) {
console.log($this.parent());
$this.parent().addClass('active');
console.log("matched");
}
});
if ($(".dropdown-menu li").hasClass("active")) {
console.log("Yes");
var $this = $(this);
$(".dropdown-menu li").prev().parent().parent().addClass('active');
console.log($(".dropdown-menu li").closest(".nav-item dropdown"));
}
});
</script>
【问题讨论】:
-
调试的时候
current的值是多少?$this.attr('href')的值是多少?$this.attr('href').indexOf(current)的结果是什么? -
当我在 AB 页面上时,URL 是 localhost.com:5888/Configuration/AC,控制台显示 Configuration/AC。这就是 current 的值。
-
您熟悉如何使用浏览器的调试工具吗?因为现在是使用它们的时候了。您可以在代码中放置断点以暂停该行的执行,然后在暂停时使用控制台观察值和操作结果。当您这样做时...
current的值是多少?$this.attr('href')的值是多少?$this.attr('href').indexOf(current)的结果是什么? -
我得到了这些结果 current = /Configuration/AccountCodes thisvalue = w.fn.init [a.nav-link] indexOfResult = -1
-
是的。不过我会把它改成 html,这样更容易阅读。
标签: javascript jquery asp.net asp.net-mvc