Для переходов вы можете использовать следующее для определения конца перехода через 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);
});
Ссылки: