我有一个包含许多复选框的表单。在我的客户端代码的某处,我需要检查是否真的检查了给定的复选框,返回一个布尔值。我已经用Google搜索并认为这个解决方案是最佳的:
$("input[@id=checkboxId]:checked").length>0
如果页面中的每个复选框都未选中,则此方法可以正常工作,否则它将完全无法使用。为什么会这样?为什么其他复选框会干扰此行为,甚至指定感兴趣的id
复选框?
我准备了fiddle这种行为。在此示例中,您可以注意到,如果选中第二个复选框,则控制台输出将始终为true
,而如果取消选中第二个复选框,则我将具有替换true/false
值。
我错在哪里可以解决这个问题(我在这个客户端上安装了jQuery 1.4并且无法升级)?
答案 0 :(得分:2)
从属性选择器中删除@
符号。({j} 1.3中删除了@attr
)
应为$("input[id=checkboxId]:checked").length > 0
<强> JSFIDDLE DEMO 强>
或只是$("#checkboxId:checked").length > 0
http://api.jquery.com/category/selectors/attribute-selectors/
注意:在jQuery 1.3 [@attr]样式选择器被删除(它们之前在jQuery 1.2中被弃用)。只需从选择器中删除“@”符号,即可使它们再次工作。
答案 1 :(得分:0)
您可以使用任何此方法
console.log($(this).is(':checked'))
或
console.log($('#checkboxId').is(':checked'))