今天做一个导航自动选中时遇到的问题,情况如下:
链接地址为<a href="/index/type/新闻">...</a>
浏览器地址栏显示链接为"xxxxx/index/type/新闻"
$(function(){//导航选中样式
var urlstr = location.href;
$("#sidebarnav a").each(function () {
if (urlstr.indexOf($(this).attr('href')) > -1&&$(this).attr('href')!='') {
$(this).parent().addClass('active');
}else{
$(this).parent().removeClass('active');
}
});
});
运行失败后检查,发现【urlstr】值与浏览器显示地址不一致,将 【urlstr】使用 decodeURI() 函数处理,问题解决。
修改后代码如下:
$(function(){//导航选中样式
var urlstr = location.href;
var decode_url = decodeURI(urlstr);
$("#sidebarnav a").each(function () {
if (decode_url .indexOf($(this).attr('href')) > -1&&$(this).attr('href')!='') {
$(this).parent().addClass('active');
}else{
$(this).parent().removeClass('active');
}
});
});