removeAttr()没有删除IE中的“disabled”属性

var disableSelection = function(){ $("#elementId").attr("disabled","disabled"); }; var enableSelection = function(){ $("#elementId").removeAttr("disabled"); }; 

我有以下要求:

  1. 禁用SELECT元素以限制用户选择选项
  2. disabled SELECT元素已经选择了一些OPTION元素
  3. on submit事件启用禁用SELECT元素以保存所选值

添加属性“禁用”适用于IE。 然而,当我尝试使用jQuery revomeAttr()方法删除属性时,而不是删除属性:

  1. 方法将“disabled”属性添加到先前启用的SELECT元素
  2. 方法不会删除“已禁用”属性

使用.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()。