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

时间:2012-06-06 18:16:39

标签: jquery

首先,the fiddle

$('#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');
   }
});

我正在尝试使用jQuery的.prop()removeProp()方法根据某些条件启用和禁用按钮。在元素上调用removeProp()之前,似乎工作正常。之后,对prop()的任何后续调用都无法禁用按钮。

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

4 个答案:

答案 0 :(得分:24)

而不是

.removeProp('disabled')

使用

.prop('disabled',false)

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

答案 1 :(得分:17)

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

jQuery文档很棒。 removeProp说:

  

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

变化:

.removeProp('disabled')

...到...

.prop('disabled', false)

...和...

.prop('disabled', 'disabled')

...到...

.prop('disabled', true)

答案 2 :(得分:4)

尝试这个简短的功能可以满足您的需求:

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

用户Explosion Pills对该甜蜜功能的信用:)

答案 3 :(得分:1)

此行将用作切换禁用功能:

$('#myButtonB').prop('disabled', !$('#myButtonB').prop('disabled'));

如果你在jquery函数中使用它,你可以使用它:

$('#enableButtonB').on('click', function() {
     $('#myButtonB').prop('disabled', !$('#myButtonB').prop('disabled'));
});