3

无论单选按钮是否被选中, .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。

4

2 回答 2

5

使用.prop('checked').

我也面临同样的问题。.is()无法捕获复选框元素的选中状态。

于 2013-03-05T14:17:08.010 回答
1

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

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

于 2012-08-18T04:52:30.100 回答