我有一个主题,根据您访问的URL设置所选的左侧导航选项。但是,如果它是附加到URL的变量,则会中断,例如www.test.com/abc.aspx?delete=1
。网址www.test.com/abc.aspx
正常工作,并将链接ABC设置为活动状态。
我尝试修改代码以切断?
之后的所有内容,但它不会按预期工作(选择NAV中没有任何内容)。
原始代码:
$(function () {
var url = window.location;
var element = $('ul#sidebarnav a').filter(function () {
return this.href == url;
}).addClass('active').parent().addClass('active');
while (true) {
if (element.is('li')) {
element = element.parent().addClass('in').parent().addClass('active');
}
else {
break;
}
}
});
我的编辑代码:
$(function () {
var url = window.location.toString();
var url_fix = url.split('?');
var element = $('ul#sidebarnav a').filter(function () {
return this.href == url_fix[0];
}).addClass('active').parent().addClass('active');
while (true) {
if (element.is('li')) {
element = element.parent().addClass('in').parent().addClass('active');
}
else {
break;
}
}
});
我认为这是"返回this.href == url_fix [0];"那是罪魁祸首。
解决方案(阅读评论后我想出了什么,谢谢你们):
$(function () {
var url = location.href.split("/").slice(-1).toString();
var url_fix = url.split('?');
var element = $('ul#sidebarnav a').filter(function () {
return $(this).attr("href") == url_fix[0];
}).addClass('active').parent().addClass('active');
while (true) {
if (element.is('li')) {
element = element.parent().addClass('in').parent().addClass('active');
}
else {
break;
}
}
});
答案 0 :(得分:1)
请尝试比较pathname
。
var element = $('ul#sidebarnav a').filter(function () {
return this.pathname == location.pathname;
}).addClass('active').parent().addClass('active');
例如,在此页面location.pathname
返回:
"/questions/48234042/set-selected-navigation-option-using-window-locaiton/48234196"
并且不包含location.hash
或location.search
答案 1 :(得分:0)
我用@vbguyny的答案解决了这个问题。必须添加location.href.split(" /")。slice(-1).toString();获取实际页面名称,但之后它工作正常。谢谢!