点击按钮为body添加类后,jQuery判断类存在失败的问题咨询
问题分析与解决
嘿,我来帮你把这个问题捋明白~
问题出在哪?
你写的判断代码if ( $("body.active-1").hasClass("active-2") )有个逻辑漏洞:
- 你先用选择器
$("body.active-1")筛选出同时带有active-1类的body元素,再去判断这个元素是否有active-2类。 - 这就意味着:如果body只有
active-2类(没有active-1),这个jQuery选择器会返回一个空对象,hasClass自然会返回false,完全无法正确检测active-2类的存在。 - 简单说,你多了一个不必要的前置筛选,把判断范围缩小到了只有
active-1存在的场景,违背了你原本想判断active-2是否存在的需求。
正确的写法
你需要直接选中body元素,再判断它是否包含active-2类,不需要额外的前置筛选:
jQuery写法
if ( $("body").hasClass("active-2") ) { // 这里写你要执行的操作 }
原生JavaScript写法(更高效,无需依赖jQuery)
if ( document.body.classList.contains("active-2") ) { // 这里写你要执行的操作 }
预期行为
按照正确的代码,预期效果应该是:
- 无论body是否带有
active-1类,只要它存在active-2类,判断条件就会返回true,进入代码块执行后续逻辑; - 如果body没有
active-2类,条件返回false,不会执行代码块里的内容。
内容的提问来源于stack exchange,提问作者morteza Yung
相关产品推荐
相关产品推荐

