当我计算复选框的已检查元素时,令人讨厌的行为

时间:2014-03-21 16:18:11

标签: javascript jquery checkbox

我有一个包含许多复选框的表单。在我的客户端代码的某处,我需要检查是否真的检查了给定的复选框,返回一个布尔值。我已经用Google搜索并认为这个解决方案是最佳的:

$("input[@id=checkboxId]:checked").length>0

如果页面中的每个复选框都未选中,则此方法可以正常工作,否则它将完全无法使用。为什么会这样?为什么其他复选框会干扰此行为,甚至指定感兴趣的id复选框?

我准备了fiddle这种行为。在此示例中,您可以注意到,如果选中第二个复选框,则控制台输出将始终为true,而如果取消选中第二个复选框,则我将具有替换true/false值。

我错在哪里可以解决这个问题(我在这个客户端上安装了jQuery 1.4并且无法升级)?

2 个答案:

答案 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'))