Per le transizioni è possibile utilizzare quanto segue per rilevare la fine di una transizione tramite jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla ha un riferimento eccellente:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
Per le animazioni è molto simile:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Si noti che è possibile passare contemporaneamente tutte le stringhe di eventi con prefisso del browser nel metodo bind () per supportare l'attivazione dell'evento su tutti i browser che lo supportano.
Aggiornare:
Secondo il commento lasciato da Duck: usi il .one()
metodo di jQuery per assicurarti che il gestore funzioni solo una volta. Per esempio:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Aggiornamento 2:
Il bind()
metodo jQuery è stato deprecato e il on()
metodo è preferito al momento jQuery 1.7
.bind()
È inoltre possibile utilizzare il off()
metodo sulla funzione di callback per assicurarsi che venga attivato una sola volta. Ecco un esempio equivalente all'utilizzo del one()
metodo:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Riferimenti: