为什么.attr()方法在jQuery 1.9中不起作用

时间:2013-11-25 12:30:11

标签: javascript jquery

我在1.8.3中使用过这个属性,但这似乎不起作用

 if ($("#checkbox").attr("checked")) 
    {
    alert("Checked");
    }
    else
        {
        alert("Not checked");
        }

检查上面代码适用于1.8.3的this fiddle

检查this fiddle,其中相同的代码不适用于1.9

6 个答案:

答案 0 :(得分:3)

您不应该使用.attr来查看是否选中了复选框 - 1.9 introduced a breaking change。请改用.prop

答案 1 :(得分:2)

尝试:

if ($("#checkbox").is(":checked")){
    alert("Checked");
}
else{
    alert("Not checked");
}

Updated fiddle here.

答案 2 :(得分:1)

从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()检索属性。

Updated Fiddle

答案 3 :(得分:1)

使用.prop代替.attr

此外,您在小提琴中使用.live,这在您使用的jquery版本中不受支持, 您需要使用.on()代替.live

演示----> http://jsfiddle.net/7VQbN/4/

答案 4 :(得分:1)

你可以这样做:

if ($("#checkbox").prop("checked")){
    alert("Checked");
}
else{
    alert("Not checked");
}

正如.prop() API文档中所述: -

  

在jQuery 1.6之前.attr()方法有时会获取属性值   在检索可能导致的某些属性时会考虑到这一点   不一致的行为。 从jQuery 1.6 开始,.prop()方法提供了一个   .attr()检索时显式检索属性值的方法   属性。

答案 5 :(得分:1)

checked不是复选框的属性。它是一个属性。之前jquery 1.6 attr用于更改复选框的checked属性,该属性错误,因此在较新版本中删除。所以{{1} }被添加为新功能以更改控件的属性。