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