我想这会工作:如何检查复选框是否已选中或未选中?
if ($(this).attr('checked')) {}
,但我不得不这样说写:
if ($(this).is(':checked')) {}
问:为什么?
我想这会工作:如何检查复选框是否已选中或未选中?
if ($(this).attr('checked')) {}
,但我不得不这样说写:
if ($(this).is(':checked')) {}
问:为什么?
已经通过这个最近,它取决于你使用的是什么版本的jQuery。从1.6开始,具有原生属性(例如“checked”,“disabled”)的attr
的功能(属性是应该存在或不存在的属性)会发生变化,因为它们可能会根据浏览器行为返回不一致的结果。
在1.6中设置或测试属性的正确方法是使用新的prop
函数,该函数始终返回true或false。您使用的第二种方法也适用于测试。
更重要的是,只要使用this.checked
,它返回无论是 “真” 或 “假”。如果您已经拥有DOM节点,则无需使用jQuery。
如果有jQuery替代品,我害怕使用任何原生JavaScript,因为我不知道它是否在一个浏览器中以一种方式运行,在另一个浏览器中以另一种方式运行。 jQuery帮助我确保我的代码是正常化的。 – 2011-05-14 19:20:14
我明白了,大部分时间我都采用同样的方法。然而,'checked'属性是100%的跨浏览器,所以在这种特殊情况下,它将按预期工作。 – ehynds 2011-05-16 13:21:45
为什么不是一个问题。那么这个看起来奇怪的2k用户呢? – Hogan 2011-05-12 17:22:46
+1 @Hogan让我发笑。 – pixelbobby 2011-05-12 17:23:31
你正在使用哪个jQuery版本? – scrappedcola 2011-05-12 17:25:00