为何出现Uncaught TypeError: $(...).is(...).each is not a function错误?
嘿,这个问题我太熟了,我来给你掰扯清楚为啥会报这个错~
根源解析:
Uncaught TypeError: $(...).is(...).each is not a function 首先我们先还原一下你的错误代码逻辑(根据报错信息推断,应该是类似这样):
// 错误代码示例 $('.checkbox').is(':checked').each(function() { // 你写的复选框值追加逻辑 });
核心问题:.is() 返回的是布尔值,不是jQuery对象
jQuery的.is()方法本质是一个判断工具——它的作用是检查当前匹配的元素集合里,是否至少有一个元素符合你指定的选择器/条件,最终返回的结果是一个true或false的布尔值,而不是一个可以继续链式调用jQuery方法的jQuery对象。
当你在.is()后面直接调用.each()时,就相当于你在对着一个true或者false喊“来给我遍历元素”——但布尔值根本没有.each()这个方法啊!浏览器自然就抛出了类型错误。
正确写法的逻辑(对应你的正确代码)
你找到的正确写法,核心思路肯定是先拿到符合条件的jQuery元素集合,再去调用.each()。常见的两种写法:
// 写法1:直接用选择器筛选已勾选的复选框 $('.checkbox:checked').each(function() { const checkboxValue = $(this).val(); // 执行值追加的逻辑 }); // 写法2:用.filter()筛选出符合条件的元素 $('.checkbox').filter(':checked').each(function() { const checkboxValue = $(this).val(); // 执行值追加的逻辑 });
这两种写法返回的都是包含所有已勾选复选框的jQuery对象,所以可以正常链式调用.each()来遍历处理每个元素。
一句话总结
.is()是用来做“是/否”判断的,返回布尔值,不能接遍历方法- 要遍历符合条件的元素,得先通过选择器或
.filter()拿到jQuery元素集合,再调用.each()
内容的提问来源于stack exchange,提问作者Don'tDownvoteMe
相关产品推荐
相关产品推荐

