Pour les transitions, vous pouvez utiliser les éléments suivants pour détecter la fin d'une transition via jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla a une excellente référence:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
Pour les animations, c'est très similaire:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Notez que vous pouvez passer simultanément toutes les chaînes d'événements préfixées du navigateur dans la méthode bind () pour prendre en charge le déclenchement de l'événement sur tous les navigateurs qui le prennent en charge.
Mettre à jour:
Selon le commentaire laissé par Duck: vous utilisez la .one()
méthode de jQuery pour vous assurer que le gestionnaire ne se déclenche qu'une seule fois. Par exemple:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Mise à jour 2:
La bind()
méthode jQuery est obsolète et la on()
méthode est préférée à partir de jQuery 1.7
.bind()
Vous pouvez également utiliser la off()
méthode sur la fonction de rappel pour vous assurer qu'elle ne sera déclenchée qu'une seule fois. Voici un exemple qui équivaut à utiliser la one()
méthode:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Références: