基于URL的菜单active类添加:访问products2、subproducts时高亮products.php菜单
逻辑问题定位
你现有代码的匹配逻辑是精准比对当前URL最后一段文件名和菜单a标签的href值,当访问products2、subproducts页面时,提取到的当前路径和products.php并不相等,自然无法触发给products菜单项加active类的逻辑。
实现方法
只需要在原有路径提取逻辑之后,加一层简单的路径映射规则,把需要关联同一菜单状态的页面,自动映射到products菜单项对应的路径上,再走原来的匹配加类流程即可。
调整后的完整代码
$(document).ready(function($){ // 提取当前URL的最后一段路径 var path = window.location.pathname.split("/").pop(); // 兼容首页空路径的场景 if (path === '') { path = 'home.php'; } // 配置需要共用active状态的路径映射 // 格式:'当前访问的页面路径': '需要匹配的菜单href值' const activePathMap = { 'products2.php': 'products.php', 'subproducts.php': 'products.php' }; // 命中映射规则时,替换匹配路径 if (activePathMap[path]) { path = activePathMap[path]; } // 匹配对应菜单,添加active类 const target = $('ul li a[href="' + path + '"]'); target.addClass('active'); });
可维护性提示
- 后续如果还有其他子页面需要触发products菜单的active状态,直接在
activePathMap里补键值对就行,不用零散写if判断 - 原代码
addClass('active ')里带的多余末尾空格已经去掉,避免生成异常类名
内容的提问来源于stack exchange,提问作者Saurabh1996
相关产品推荐
相关产品推荐

