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

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。

1
这里使用1.6.4版本可以正常工作:http://jsfiddle.net/j08691/wqhVQ/ - j08691
@arxanas 我无能为力。现在工作需要使用这个版本。 - intargc
或者 $('#blah').attr('checked', 'checked') - mask8
@BhuvanRikka 我不是...这只是一个单一的元素。 - intargc
当您运行一些带有标记的代码而不尝试通过控制台进行操作时,您是否遇到了相同的问题? - marteljn
显示剩余2条评论
2个回答

5

使用 .prop('checked') 方法。

我也遇到了同样的问题,.is() 方法不能获取复选框元素的选中状态。


1
根据jQuery API文档,不要使用.removeProp()来删除checked或其他本地属性。我认为对于.removeAttr()也是如此。

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


就是这样。我采纳了@nnnnnn的建议并检查了removeProp是否被使用,结果发现确实被使用了。将其更改为.prop('checked', false)后,一切都很好。谢谢! - intargc
1
removeAttr()和removeProp()不是同一件事情。在prop出现之前,removeAttr是处理更改的正确方式。实际上,应该永远不使用Remove prop。 - wirey00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接