Как я могу выполнить функцию после завершения команды toggleClass? Я пробовал следующее, но не повезло:
$("#loader").toggleClass('fadeOut', function () {
alert('a');
});
Как я могу выполнить функцию после завершения команды toggleClass? Я пробовал следующее, но не повезло:
$("#loader").toggleClass('fadeOut', function () {
alert('a');
});
В jQuery есть метод обещаний, который возвращает отложенный объект, к которому вы можете получить доступ, используя .promise(). Этот объект обещания будет разрешен после завершения всех анимаций на выбранных элементах. В этот момент вы можете привязать к этому метод.
$("#loader").toggleClass('fadeOut',600).promise().done(function(){
alert('a');
});
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');
});
}
$("#loader").stop().fadeTo(400,0, function() {
$(this).toggleClass('fadeOut').hide(); // exec after is faded out.
alert(' ta-da!');
});
Я использовал другой метод для решения этой проблемы.
В этом примере я объединил функцию .delay() и .queue()
$(this).toggleClass("focus_out").delay(500).queue(function(custom_call_back) {
$(this).removeClass('focus_out');
custom_call_back();
});
В вашей ситуации $(this) может быть $('#loader')
jQuery: . delay(); queue();