removeAttr()没有删除IE中的“disabled”属性
var disableSelection = function(){ $("#elementId").attr("disabled","disabled"); }; var enableSelection = function(){ $("#elementId").removeAttr("disabled"); };
我有以下要求:
- 禁用SELECT元素以限制用户选择选项
- disabled SELECT元素已经选择了一些OPTION元素
- on submit事件启用禁用SELECT元素以保存所选值
添加属性“禁用”适用于IE。 然而,当我尝试使用jQuery revomeAttr()方法删除属性时,而不是删除属性:
- 方法将“disabled”属性添加到先前启用的SELECT元素
- 方法不会删除“已禁用”属性
使用.prop
代替.attr
来影响元素的禁用状态:
var disableSelection = function(){ $("#elementId").prop("disabled", true); }; var enableSelection = function(){ $("#elementId").prop("disabled", false); };
有关更多信息,请参阅.prop()vs .attr() 。
您可以使用removeProp('disabled')
代替。 虽然removeAttr('disabled')
没有,但它对我removeAttr('disabled')
。
Jquery Docs说,关于.removeProp():
注意:请勿使用此方法删除本机属性,例如checked,> disabled或selected。 这将完全删除属性,一旦>删除,不能再次添加到元素。 使用.prop()将这些属性设置为false。
补充说明:
在版本9之前的Internet Explorer中,使用.prop()将DOM元素>属性设置为除简单原始值(数字,字符串或>布尔值)之外的任何内容都可能导致内存泄漏(如果未删除该属性)(使用> .removeProp())在从文档中删除DOM元素之前。 要安全地>在没有内存泄漏的DOM对象上设置值,请使用.data()。