Javascript 如何检查复选框是否已选中?

Javascript 如何检查复选框是否已选中?,javascript,jquery,Javascript,Jquery,我认为这会奏效: if ($(this).attr('checked')) {} 但我不得不这样写: if ($(this).is(':checked')) {} 问:为什么?当您请求选中属性时,您没有得到布尔值: // this would be correct if($(this).attr('checked') == 'checked') // jQuery 1.6+ if($(this).prop('checked')) 最近经历过这些,这取决于您使用的jQuery版本。从1.6

我认为这会奏效:

if ($(this).attr('checked')) {}
但我不得不这样写:

if ($(this).is(':checked')) {}

问:为什么?

当您请求选中属性时,您没有得到布尔值:

// this would be correct
if($(this).attr('checked') == 'checked')

// jQuery 1.6+
if($(this).prop('checked'))

最近经历过这些,这取决于您使用的jQuery版本。从1.6开始,
attr
的功能与本机属性(如“已检查”、“已禁用”)——属性是假定存在或未更改的属性,因为根据浏览器行为,它们可能返回不一致的结果


设置或测试1.6中属性的正确方法是使用新的
prop
函数,该函数始终返回true或false。您使用的第二种方法也可用于测试。

更好的是,只需使用
这个。选中的
,它返回“true”或“false”。无需使用jQuery,特别是在您已经拥有DOM节点的情况下。

为什么不是问题。这个看起来很奇怪的2k用户怎么样?+1@Hogan让我发笑。你用的是哪个jquery版本?你用的是最新版本的jquery吗?因为那样你就必须使用
.prop
而不是
.attr
@Pixelbobby--我最初说的是“因为”。用户界面有问题,所以我重新写了一次。像selected一样,我相信有些浏览器和案例会失败。(因此更改为使用prop)。属性值为布尔常量
true
,这是完全可以的-具体来说,它不必是字符串“checked”。在DOM中,该属性实际上是一个简单的布尔值。如果有jQuery替代方案,我害怕使用任何本机JavaScript,因为我不知道它是否会在一个浏览器中以一种方式运行,在另一个浏览器中以另一种方式运行。jQuery帮助我确保我的代码是规范化的。但是,
checked
属性是100%跨浏览器的,因此在这种特殊情况下,它将按预期工作。