如何在jQuery中判断多个复选框是否全部未选中?
错误原因分析
- 第一段代码的问题:
$().not()方法返回的是jQuery对象,不管是否匹配到符合条件的元素,jQuery对象本身永远为真值,直接用&&做判断永远返回true,逻辑完全失效。 - 后两段代码的问题:首先存在语法错误,多了多余的右括号,会直接导致代码运行报错;就算修正语法,
$().not(':checked').length的逻辑本身是成立的,但语法问题导致代码无法正常执行。
正确实现方案
写法1:逐个校验(可读性高)
用is(':checked')直接获取元素的选中状态布尔值,取反后判断未选中状态:
if ( !$("#adviceonprivatemail").is(":checked") && !$("#adviceonmobile").is(":checked") && !$("#adviceoncompanymail").is(":checked") ) { console.log('所有复选框均未选中') } else { console.log('存在至少一个选中的复选框') }
写法2:批量校验(代码更简洁)
把三个复选框合并成一个选择器批量选中,直接统计选中元素的数量,数量为0即代表全部未选中:
// 合并选择器选中所有需要校验的复选框 const $targetCheckboxes = $("#adviceonprivatemail, #adviceonmobile, #adviceoncompanymail") if ($targetCheckboxes.filter(":checked").length === 0) { console.log('所有复选框均未选中') } else { console.log('存在至少一个选中的复选框') }
内容的提问来源于stack exchange,提问作者Stig Kølbæk
相关产品推荐
相关产品推荐

