Для переходів ви можете використовувати наступне для виявлення кінця переходу через 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 () одночасно для підтримки запуску події у всіх браузерах, які його підтримують.
Оновлення:
Відповідно до коментаря, який залишив Дак: ви використовуєте .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);
});
Список літератури: