jQuery中item.hasClass不是函数问题排查求助
问题原因与解决方法
报错原因
你代码里的item是原生DOM元素,不是jQuery对象,所以无法调用hasClass()、addClass()这类jQuery专属方法。
jQuery的.each()方法回调中,第二个参数传递的是匹配到的原生DOM节点,而非jQuery包装后的对象——这是jQuery API的设计规则,和你误以为的“操作jQuery对象”不符。
解决方案
有两种常用修复方式:
方式1:将原生DOM转为jQuery对象
用$(item)把原生元素包装成jQuery对象,之后就能正常调用jQuery方法:
$('.cupsGame-level').each((i, item) => { const $item = $(item); if ($item.hasClass(`cupsGame-level-${this.gameCupsStats.level}`)) { $item.addClass('passedLevel'); } })
方式2:简化代码,直接用选择器筛选(更推荐)
完全可以不用.each()循环,直接通过复合选择器或.filter()方法定位目标元素,一次性添加类:
// 复合选择器写法 $(`.cupsGame-level.cupsGame-level-${this.gameCupsStats.level}`).addClass('passedLevel'); // 或者用filter筛选 $('.cupsGame-level').filter(`.cupsGame-level-${this.gameCupsStats.level}`).addClass('passedLevel');
内容的提问来源于stack exchange,提问作者shiroSn
相关产品推荐
相关产品推荐

