16

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

实际上,我使用了这段运行良好的简单代码。

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

这是最好的方法还是有类似.toggle()功能在禁用/启用之间切换?

4

3 回答 3

47

您应该使用.prop禁用:

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

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

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

更新:ES2015

$("#menuContinenti").prop("disabled", (_, val) => !val);
于 2012-08-10T14:04:25.000 回答
8

你可以编写自己的插件来做这样的事情。

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

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

然后像这样使用它:

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

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

于 2012-08-10T14:06:44.833 回答
1

您可以使用 $.is 函数进行检查,如下所示

$("#filtri").change(function(){
    $("#menuContinenti").attr("disabled", ! $(this).is(':checked'));    
});
于 2012-08-10T14:15:11.180 回答