Para las transiciones, puede usar lo siguiente para detectar el final de una transición a través de jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla tiene una excelente referencia:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
Para las animaciones es muy similar:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Tenga en cuenta que puede pasar todas las cadenas de eventos con prefijo del navegador al método bind () simultáneamente para admitir la activación del evento en todos los navegadores que lo admitan.
Actualizar:
Según el comentario dejado por Duck: utiliza el .one()
método de jQuery para garantizar que el controlador solo se active una vez. Por ejemplo:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Actualización 2:
El bind()
método jQuery ha quedado en desuso y on()
se prefiere el método a partir de jQuery 1.7
.bind()
También puede usar el off()
método en la función de devolución de llamada para asegurarse de que se disparará solo una vez. Aquí hay un ejemplo que es equivalente a usar el one()
método:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Referencias