Для переходов вы можете использовать следующее, чтобы определить конец перехода через jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla имеет отличную ссылку:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
Для анимации это очень похоже:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Обратите внимание, что вы можете передавать все строки событий с префиксом браузера одновременно в метод bind () для поддержки запуска события во всех браузерах, которые его поддерживают.
Обновление:
Согласно оставленному Даком комментарию: вы используете метод jQuery .one()
, чтобы обработчик срабатывал только один раз.Например:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Обновление 2:
jQuery bind()
устарел, и метод on()
предпочтителен с jQuery 1.7
.bind()
Вы также можете использовать метод off()
в функции обратного вызова, чтобы обеспечить его запуск только один раз.Вот пример, который эквивалентен использованию one()
метода:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Ссылки: