如何在特定URL页面加载时为jQuery菜单添加active类并保持展开
问题原因
你写的代码存在两处明显错误,导致无法生效:
- 条件判断逻辑不完整:
indexOf()方法匹配到目标字符串时会返回对应的下标位置,未匹配时返回-1,你没有补全判断条件,分支永远不会按预期触发 - 语法&执行时机错误:代码末尾多了冗余的闭合符号
});,且没有等待DOM加载完成就执行DOM操作,很可能出现选不到.menu和nav元素的情况
修正方案
直接在原有点击切换逻辑的基础上,补充页面加载后的URL判断逻辑即可,完整可用代码如下:
// 等待DOM完全渲染后再执行逻辑 $(function() { // 原有点击切换菜单的逻辑不变 $('.menu').on('click', function() { $('.menu').toggleClass('active'); $('nav').toggleClass('active'); }); // 页面加载时判断URL是否包含get-started,匹配则默认展开菜单 if(window.location.href.indexOf("get-started") > -1) { $('.menu').addClass('active'); $('nav').addClass('active'); } });
说明
这里使用addClass()而非你原来的toggleClass()更稳妥,可避免页面加载时如果元素已经预置了active类,反而被误操作收起的问题。
内容的提问来源于stack exchange,提问作者Gavin Reynoldson
相关产品推荐
相关产品推荐

