所以我想要做的就是将文本输入的disabled和readonly属性分别设置为“disabled”和“readonly”。我正在使用Jquery 1.7.1版。我尝试了以下方法:
$("#testtext").attr('disabled','disabled');
$("#testtext").attr("readonly","readonly");
$("#testtext").attr('disabled',true);
$("#testtext").attr("readonly",true);
$("#testtext").prop('disabled',true);
$("#testtext").prop("readonly",true);
生成的标记如下所示:
<input type = "text" id = "testtext" disabled />
正如您所看到的那样,它正在添加disabled属性但不为其赋值。这适用于某些设备,但不是我试图支持的所有设备。这似乎是jQuery应该做的事情,但我的谷歌搜索在这方面没有提出太多。有没有人有任何建议或意见?非常感谢任何建议!
答案 0 :(得分:4)
$("#testtext").prop("disabled", true);
$("#testtext").prop("readonly", true);
无处不在,因为它们是布尔标志:它们的存在表明该标志处于打开状态(该元素被禁用/只读),无论该属性是否具有值(或者甚至标记中的值是⇨{{1也被禁用了。)
答案 1 :(得分:2)
.prop( propertyName )
// propertyName要获取的属性的名称。
.attr( attributeName )
// attributeName要获取的属性的名称。
根据规范:
从jQuery 1.6开始,.attr()方法为属性返回undefined 尚未设定。另外,不应该使用.attr() 普通对象,数组,窗口或文档。要检索和 更改DOM属性,使用.prop()方法。
.prop()方法仅获取第一个元素的属性值 在匹配的集合中。它为属性的值返回undefined 尚未设置,或匹配的集合没有元素。要得到 单独使用每个元素的值,使用循环结构 作为jQuery的.each()或.map()方法。
属性和属性之间的区别非常重要 具体情况。在jQuery 1.6之前,有时会使用.attr()方法 在检索某些属性时考虑了属性值, 这可能会导致行为不一致。从jQuery 1.6开始,.prop() 方法提供了一种显式检索属性值的方法 .attr()检索属性。
答案 2 :(得分:1)
使用.prop()
。对于布尔属性,它比.attr()
属性通常会影响DOM元素的动态状态 更改序列化的HTML属性。例子包括价值 输入元素的属性,输入的禁用属性和 按钮,或复选框的选中属性。 .prop()方法 应该用于设置disabled和checked而不是.attr() 的方法强>
(来自.prop()
的jquery文档)