Para transições, você pode usar o seguinte para detectar o final de uma transição via jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla tem uma excelente referência:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
Para animações é muito semelhante:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Observe que você pode passar todas as seqüências de eventos com prefixo do navegador para o método bind () simultaneamente para dar suporte ao disparo de eventos em todos os navegadores que o suportam.
Atualizar:
De acordo com o comentário deixado por Duck: você usa o .one()
método jQuery para garantir que o manipulador seja acionado apenas uma vez. Por exemplo:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
Atualização 2:
O bind()
método jQuery foi descontinuado e o on()
método é preferido a partir de jQuery 1.7
.bind()
Você também pode usar o off()
método na função de retorno de chamada para garantir que seja acionado apenas uma vez. Aqui está um exemplo que é equivalente a usar o one()
método:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
Referências: