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