如果符合URL中的某些条件,我有一个菜单我想为其添加一个“有效”类。
这样我就可以设置与用户所在页面相关的菜单项。
该类正由jquery添加:
$(function () {
setNavigation();
});
function setNavigation() {
var path = window.location.pathname;
path = path.replace(/\/$/, "");
path = decodeURIComponent(path);
$(".nav a").each(function () {
var href = $(this).attr('href');
if (path.substring(0, href.length) === href) {
$(this).closest('li').addClass('active');
}
});
}
(小提琴可以在这里找到:http://jsfiddle.net/fc8fdv4a/)
问题在于,无论页面/网址是什么,它都将活动类应用于我的主页菜单项<a href="/">Home</a>
以及用户所在的页面。
我可以通过分析<a href="example.com">Home</a>
等完整网址来解决这个问题。
但为了保持一致性,我不希望将我的域编码到我的菜单项中。
有人会介意说清楚并解释什么是错的吗?
为了澄清,我可以让脚本按预期运行,如果我指定整个地址,即
<a href="example.com">Home</a>
但如果我指定为:
<a href="/">Home</a>
答案 0 :(得分:0)
问题在于:
if (path.substring(0, href.length) === href) {...}
总是匹配&#39; /&#39;,因为href.length是1,因此子字符串是&#39; /&#39;。
怎么样只是
if (path == href) {...}
代替?我不确定你要用子串实现什么。