jQuery .is(':checked')总是返回false

时间:2012-08-18 04:22:19

标签: javascript jquery

如果选中或不选中单选按钮,则无效.is(':checked')将返回false。这是我在调试时在Chrome控制台中玩的一些东西:

> $('#blah')
[<input type=​"radio" id=​"blah" name=​"blah_type" value=​"blah" class=​"styled" checked=​"checked">​]
> $('#blah').removeAttr('checked')
[<input type=​"radio" id=​"blah" name=​"blah_type" value=​"blah" class=​"styled">​]
> $('#blah').is(':checked')
false
> $('#blah').prop('checked', true)
[<input type=​"radio" id=​"blah" name=​"blah_type" value=​"blah" class=​"styled">​]
> $('#blah').is(':checked')
false
> $('#blah').prop('checked')
true
> $('#blah').removeProp('checked')
[<input type=​"radio" id=​"blah" name=​"blah_type" value=​"blah" class=​"styled">​]
> $('#blah').attr('checked', true)
[<input type=​"radio" id=​"blah" name=​"blah_type" value=​"blah" class=​"styled" checked=​"checked">​]
> $('#blah').attr('checked')
"checked"
> $('#blah').prop('checked')
undefined
> $('#blah').is(':checked')
false

这里可能出现什么问题?我正在使用jQuery 1.6.4。

2 个答案:

答案 0 :(得分:5)

使用.prop('checked')

我也遇到了同样的问题。 .is()无法捕获复选框元素的已检查状态。

答案 1 :(得分:1)

根据jQuery API文档,请勿使用.removeProp()删除checked或其他本机属性。对于.removeAttr(),我也会假设相同。

http://api.jquery.com/removeProp/