使用jquery 1.6 .prop()将控件设置为只读

随着jQuery 1.6的发布,关于SO的建议一般是开始使用prop(),你曾经使用attr()。

当我想要一个元素只读时会发生什么?

$('.control').prop('readonly', 'readonly'); $('.control').prop('readonly', true); 

这些似乎都没有使控制只读。 将元素readonly作为规则的例外吗?

问题是属性名称区分大小写。 尝试:

 $('.control').prop('readOnly', true); 

虽然我真的不知道为什么这需要jQuery。 这也适用:

 document.getElementsByClassName("control")[0].readOnly = true; 

试试这个:

 $(".control").prop({ readOnly: true }); 

我想到这样: .attr()获取html标记中的默认值,而.prop()获取/设置动态值。 看看以下内容:

  $(".control").attr("readOnly") // would yield "readOnly" $(".control").prop("readOnly") // would yield true $(".control").is(":readOnly") // would yield true 

api文档说明了这一点:

在特定情况下,属性和属性之间的差异可能很重要。 在jQuery 1.6之前,.attr()方法有时在检索某些属性时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()只检索属性。