Toggle отключить атрибут в jquery

У меня есть флажок, который включает или отключает элемент select

На самом деле я использую этот простой фрагмент кода, который отлично работает.

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

Это лучший способ или есть что-то вроде функции .toggle() для переключения между отключенными/включенными?

Ответы

Ответ 1

Вы должны использовать .prop для отключенного:

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

UPDATE: не понял, что текущее значение свойства является аргументом функции; эта версия еще чище:

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

UPDATE: ES2015

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

Ответ 2

Вы можете написать свой собственный плагин, который сделает что-то вроде этого.

Добавьте это после jQuery в файл script.

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

Затем используйте его следующим образом:

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

Предоставлено: Включить отключенный атрибут с помощью jQuery

Ответ 3

вы можете проверить, используя функцию $.is, как показано ниже

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