【发布时间】:2014-01-09 22:22:23
【问题描述】:
基本上,我正在尝试将active 类添加到当前菜单项。我成功使用了下面的 jQuery 代码。
jQuery(document).ready(function($){
var path = window.location.href;
$('#nav-main li a').each(function() {
if (this.href === path) {
$(this).addClass('active');
}
});
});
我的导航栏是这样的:
<ul id="nav-main">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/brands">Brands</a>
</li>
<li>
<a href="/users">Users</a>
</li>
<li>
<a href="/employees">Employees</a>
</li>
</ul>
其中有以下 CSS:
ul#nav-main {
width: 1050px;
margin: 0 auto;
color: #fff;
}
ul#nav-main li {
margin: 0 5px 0 5px;
list-style-type: none;
text-align: center;
display: inline-block;
font-size: 17px;
}
ul#nav-main li a {
padding: 0 15px;
line-height: 2.692307692;
display: inline-block;
text-decoration: none;
color: #fff;
}
ul#nav-main li a:hover {
background-color: rgba(0, 0, 0, 0.3);
}
ul#nav-main li a.active {
background-color: rgba(0, 0, 0, 0.3);
}
现在,当我单击“用户”时,我转到 /users,jQuery 代码成功添加了 active 类,因此“用户”显示为导航栏中的当前菜单项。但是,当我单击“用户”页面上的链接时,该链接指向例如 /users/view/12345(其中 12345 是用户的 ID),“用户”页面未显示为当前菜单项了。
我认为这与 jQuery 代码仅查看 nav-main li a 而不是页面上的其他 a 的事实有关。有什么我可以添加到我的 jQuery 代码中来完成这项工作的吗?
【问题讨论】:
-
我认为这取决于
if (this.href === path)当你在/users/view/12345时,就没有更多的身份了。但老实说,我不完全确定,javascript 这不是我最好的。不用等待,当然,您的代码只有在您单击nav-main li中的链接时才有效。您以这种方式定义了 jquery。 -
我一直在努力思考和寻找解决这两个事实的方法,但无法想到或找到使其发挥作用的方法。
标签: javascript jquery html css