jQuery对象调用.is方法报错:Uncaught TypeError: el.is is not a function
解决Uncaught TypeError: el.is is not a function错误
问题根源
报错的核心原因是误用了$$替代了jQuery的$选择器:
- 原生浏览器环境中,
$$是document.querySelectorAll()的快捷别名,返回的是NodeList集合,而非jQuery对象,因此没有jQuery提供的.is()方法。 - 你原本的代码用
$(this)能正常运行,是因为$是jQuery的全局别名,它会把DOM元素包装成jQuery对象,从而支持.is()这类jQuery方法。
修复方案
把代码中所有的$$替换回jQuery的$即可:
$('input, select').on('click', function () { let el = $(this) console.log(el); for (var i = 0; i < paySelectors.length; i++) { var sl = paySelectors[i] if (el.is('[class*="' + sl.element + '"], [id*="' + sl.element + '"]')) { const action = sl.step if (action) { if (sl.has_start) { handleSelectorClick(this, action + '_start') handleSelectorInput(this, action + '_complete') } else { handleSelectorClick(this, action) } } break } } })
额外说明
如果你的项目中自定义了$$方法,需要确认它是否返回jQuery对象。但从当前报错来看,$$(this)返回的不是jQuery对象,所以优先使用jQuery原生的$来包装DOM元素,确保能调用.is()等方法。
内容的提问来源于stack exchange,提问作者Filip Stojanovic
相关产品推荐
相关产品推荐

