如何根据URL参数为元素添加active类?功能失效求助
问题解决:根据URL参数为元素添加active类失败
核心问题
你的代码无法生效有两个关键原因:
- jQuery选择器错误:获取到
cate_no的数值后,直接用$(id)无法定位元素——jQuery的id选择器必须以#开头,纯数值无法被识别为有效的id选择器。 - 正则表达式转义问题:代码里的
&是HTML实体转义字符,在JS正则中应该替换为普通的&,否则会导致参数匹配失效。
修正后的代码
jQuery代码
$(document).ready(function() { $.urlParam = function(name){ // 替换HTML转义的&为普通&,保证正则匹配正常 var results = new RegExp('[?&]' + name + '=([^&#]*)').exec(window.location.href); if (results == null) { return null; } return decodeURI(results[1]) || 0; } var id = $.urlParam('cate_no'); // 为id添加#前缀,正确定位目标元素;同时判断id存在,避免空值报错 if (id) { $('#' + id).addClass("active"); // 若需要给父元素<li>加active类,可替换为下方代码: // $('#' + id).parent('li').addClass("active"); } });
对应HTML结构(无需修改)
<li><a id="800" href="/product/list_journal.html?cate_no=800">ex</a></li> <li><a id="700" href="/product/list_journal.html?cate_no=700">ex</a></li>
额外提示
- 确认页面已正确引入jQuery库,否则所有jQuery逻辑都无法执行
- 若
active样式需要作用在<li>标签而非<a>,直接使用注释中的parent('li')方法定位父元素即可
内容的提问来源于stack exchange,提问作者RAINY2453
相关产品推荐
相关产品推荐

