Как я могу выполнить функцию после завершения команды 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();