我注意到在升级到最新版本的jquery(1.7.1)后,以下代码不再评估
if( $('#item').attr('checked') === true ){
//do something
}
我有点理解为什么他们可能会做出这样的改变,但有没有人有链接到他们为什么这样做的文件?我想确保我的代码正常工作..似乎我可能已经错误地使用了上面的代码了很长一段时间。
答案 0 :(得分:4)
宁愿使用
if( $('#item').is(':checked')){
//do something
}
答案 1 :(得分:4)
使用.is
检查是否选中了复选框。见下文,
if( $('#item').is(':checked')){
..
修改强>
据我所知,jQuery的 $('#item').attr('checked')
从未返回true。它返回checked
或undefined
。
凯文指出,
1.6之后.attr('checked')正确返回一个字符串(所有属性 是字符串)。如果你想要一个布尔属性,使用新的.prop() 方法
如果您想比较true
,请使用this.checked
。请参阅下文< - 我更喜欢使用this.checked
,因为这比任何其他方法都快。
if (this.checked === true) {
..
或
使用.prop
,如下所示,DEMO
if($(this).prop('checked') === true) {
..
答案 2 :(得分:1)
它不起作用,因为每个浏览器都有自己的方式来检查它,例如:
checked,checked =“checked”,checked =“true”。
所以你应该使用selector:checked属性的intead。并且jQuery将关注所有浏览器:)