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

why is .attr() method not working in jQuery 1.9

本文关键字:不起作用 jQuery attr 方法 为什么      更新时间:2023-09-26

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

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

检查这个小提琴,上面的代码适用于1.8.3

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

您不应该使用.attr来查看是否选中了复选框——1.9引入了一个突破性的更改。请改用.prop

尝试:

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

此处更新了fiddle

checked不是复选框的属性。这是一处房产。在jquery 1.6之前,attr用于更改复选框的checked属性,该属性是错误的,因此在新版本中被删除。因此添加了prop作为新特性,改变了控件的特性。

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

更新的Fiddle

使用.prop而不是.attr

此外,您在fiddle中使用.live,这在您使用的jquery版本中不受支持,您需要使用.on()而不是.live

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

您可以这样做:

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

.prop() API文件所述:-

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