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

时间:2011-05-05 01:33:11

标签: jquery readonly jquery-1.6

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

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

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

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

2 个答案:

答案 0 :(得分:46)

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

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

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

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

答案 1 :(得分:10)

试试这个:

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

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

<input id="someInput" readonly="readOnly" />

$(".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()   检索属性。