jQuery不再接受attr(“已检查”)==真逻辑
我注意到,在升级到最新版本的jquery(1.7.1)之后,以下代码不再进行评估jQuery不再接受attr(“已检查”)==真逻辑,jquery,attr,Jquery,Attr,我注意到,在升级到最新版本的jquery(1.7.1)之后,以下代码不再进行评估 if( $('#item').attr('checked') === true ){ //do something } 我有点理解他们为什么会做出这样的改变,但是有没有人可以链接到他们为什么会这样做的文档?我想确保我的代码正常工作。。似乎我很长一段时间都在错误地使用上面的内容。宁可使用 if( $('#item').is(':checked')){ //do something } 使用.is检
if( $('#item').attr('checked') === true ){
//do something
}
我有点理解他们为什么会做出这样的改变,但是有没有人可以链接到他们为什么会这样做的文档?我想确保我的代码正常工作。。似乎我很长一段时间都在错误地使用上面的内容。宁可使用
if( $('#item').is(':checked')){
//do something
}
使用
.is
检查复选框是否已选中。见下文
if( $('#item').is(':checked')){
..
编辑:
据我所知,jQuery的$('#item').attr('checked')
从未返回true。它返回选中的
或未定义的
正如凯文指出的
.attr('checked')在1.6之后正确返回字符串(所有属性
是字符串)。如果需要布尔属性,请使用new.prop()
方法
如果要比较
true
,请使用this。选中。请参见下文,它不起作用,因为每个浏览器都有自己的检查方式,例如:
checked,checked=“checked”,checked=“true”
所以您应该使用selector:checked-intead属性。jQuery将处理所有浏览器:).attr('checked')
在1.6之后正确返回字符串(所有属性都是字符串)。如果您想要布尔属性,请使用新的.prop()
方法。此注释与任何人得到的答案都非常接近!我不知道道具的方法。谢谢1.5.2:1.6.4:在添加.prop
方法之前,.attr
(我认为不正确)返回的值不是某些属性的字符串。@KevinB我不知道。。今天我又学到了一个新东西Thx.即使不同的浏览器在属性中使用不同的值,该属性仍然是字符串
,而不是布尔值
。jQuery将其转换为1.6.0之前的boolean
。标记为实际帮助澄清问题的答案,而不是假设我不知道如何实际检查我的对象。这些答案中的大多数都是!这不能回答我的问题。我知道如何修复这个错误。我想知道jQuery改变主意的原因!为了推动虚拟开发人员,他们需要“专业人士”来教他们jQuery,而不是自己向jQuery创始人索要课程(就像他们最初那样)!!!
if (this.checked === true) {
..
if($(this).prop('checked') === true) {
..