jQuery不再接受attr(“已检查”)==真逻辑

jQuery不再接受attr(“已检查”)==真逻辑,jquery,attr,Jquery,Attr,我注意到,在升级到最新版本的jquery(1.7.1)之后,以下代码不再进行评估 if( $('#item').attr('checked') === true ){ //do something } 我有点理解他们为什么会做出这样的改变,但是有没有人可以链接到他们为什么会这样做的文档?我想确保我的代码正常工作。。似乎我很长一段时间都在错误地使用上面的内容。宁可使用 if( $('#item').is(':checked')){ //do something } 使用.is检

我注意到,在升级到最新版本的jquery(1.7.1)之后,以下代码不再进行评估

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) {
..