Для переходов вы можете использовать следующее для определения конца перехода через 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 (), чтобы поддерживать срабатывание события во всех браузерах, которые его поддерживают.
Обновить:
Согласно комментарию, оставленному Duck: вы используете .one()
метод jQuery, чтобы обработчик срабатывал только один раз. Например:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Обновление 2:
bind()
Метод jQuery устарел, и on()
метод является предпочтительным с jQuery 1.7
.bind()
Вы также можете использовать off()
метод в функции обратного вызова, чтобы обеспечить его запуск только один раз. Вот пример, который эквивалентен использованию one()
метода:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Ссылки: