使用jQuery的prop()切换禁用属性不起作用

Jas*_*wne 18 jquery

首先,小提琴.

$('#enableButtonB').click(function (e) {
   if($(e.target).is(':checked'))
   {
       $('#myButtonB').removeProp('disabled');
       alert('Enable Button B');
   }
   else
   {
       $('#myButtonB').prop('disabled', true); 
       alert('Disable Button B');
   }
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用jQuery .prop()removeProp()方法来启用和禁用基于某些条件的按钮.它似乎工作正常,直到removeProp()被调用元素.之后任何后续调用都prop()无法禁用按钮.

重复启用和禁用元素的正确方法是什么?

Bla*_*ger 25

代替

.removeProp('disabled')
Run Code Online (Sandbox Code Playgroud)

使用

.prop('disabled',false)
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/kqnZz/6/

  • 我随机遇到这个问题/答案,寻找其他东西(我发现它有点旧),但解释*为什么*需要这种改变会很有帮助。从 jQuery 的文档 (https://api.jquery.com/removeProp/) 中,“注意:不要使用此方法删除本机属性,例如选中、**禁用**或选择。**这将删除该属性完全,一旦删除,就无法再次添加到元素中。请使用 .prop() 将这些属性设置为 false。**” (2认同)

iam*_*eed 17

首先,http://jsfiddle.net/iambriansreed/KxGVa/

jQuery文档很棒.removeProp说:

注意:请勿使用此方法删除本机属性,例如已选中,已禁用或已选中.这将完全删除属性,一旦删除,就不能再次添加到元素.使用.prop()这些属性设置为false代替.

更改:

.removeProp('disabled')
Run Code Online (Sandbox Code Playgroud)

...至...

.prop('disabled', false)
Run Code Online (Sandbox Code Playgroud)

...和...

.prop('disabled', 'disabled')
Run Code Online (Sandbox Code Playgroud)

...至...

.prop('disabled', true)
Run Code Online (Sandbox Code Playgroud)


小智 5

试试这个简短的函数是否能满足您的需求:

$("#enableButtonB").click(function(){
  $("#myButtonB").prop('disabled', function (_, val) { return ! val; });
});
Run Code Online (Sandbox Code Playgroud)

为用户提供爆炸药丸以获得该甜蜜功能的信用:)