Как я могу выполнить функцию после завершения команды toggleClass? Я пробовал следующее, но не повезло:
$("#loader").toggleClass('fadeOut', function () {
alert('a');
});
Ответ 1
В jQuery есть метод обещаний, который возвращает отложенный объект, к которому вы можете получить доступ, используя .promise(). Этот объект обещания будет разрешен после завершения всех анимаций на выбранных элементах. В этот момент вы можете привязать к этому метод.
toggleClass выполняется немедленно, поэтому вам не нужен обратный вызов для toggleClass, просто поместите alert('a') в следующую строку, которая будет оповещаться после выполнения toggleClass.
Изменить: Похоже, вы хотите jQuery UI Effects - toggleClass, который, к сожалению, не имеет функции обратного вызова.
Вероятно, вы должны написать свою собственную функцию переключения. См. Ниже для переключения fadeIn/fadeOut,
var $loader = $("#loader");
if ($loader.is(':visible')) {
$loader.fadeOut(100, function () {
alert('fade out complete');
});
} else {
$loader.fadeIn(100, function () {
alert('fadeIn complete');
});
}
Ответ 3
$("#loader").stop().fadeTo(400,0, function() {
$(this).toggleClass('fadeOut').hide(); // exec after is faded out.
alert(' ta-da!');
});
Ответ 4
Я использовал другой метод для решения этой проблемы.
В этом примере я объединил функцию .delay() и .queue()