jquery中的toggle disabled属性

我有一个启用或禁用select元素的复选框

实际上我使用这段简单的代码工作正常。

$("#filtri").change(function(){ if ($("#menuContinenti").attr("disabled")) { $("#menuContinenti").removeAttr("disabled"); } else { $("#menuContinenti").attr("disabled", "disabled"); } }); 

这是最好的方法还是有像.toggle()函数在禁用/启用之间切换?

你应该使用.prop来禁用:

 $("#menuContinenti").prop('disabled', function () { return ! $(this).prop('disabled'); }); 

更新:没有意识到当前属性值是函数的参数; 这个版本更清洁:

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

更新:ES2015

 $("#menuContinenti").prop("disabled", (_, val) => !val); 

您可以编写自己的插件来执行类似的操作。

在jQuery之后,最好在脚本文件中添加它。

 (function($) { $.fn.toggleDisabled = function(){ return this.each(function(){ this.disabled = !this.disabled; }); }; })(jQuery); 

然后像这样使用它:

 $('#my-select').toggleDisabled(); 

礼貌: 使用jQuery切换输入禁用属性

您可以使用下面的$ .is函数进行检查

 $("#filtri").change(function(){ $("#menuContinenti").attr("disabled", ! $(this).is(':checked')); });