Принятый ответ в настоящее время запускается дважды для анимации в Chrome (он также использует .bind
, когда предпочтительный метод, так как jQuery 1.7 теперь .on
).Предположительно, это потому, что он распознает webkitAnimationEnd
, а также animationEnd
.Следующее, безусловно, будет срабатывать только один раз:
/* From Modernizr */
function whichTransitionEvent(){
var el = document.createElement('fakeelement');
var transitions = {
'animation':'animationend',
'OAnimation':'oAnimationEnd',
'MSAnimation':'MSAnimationEnd',
'WebkitAnimation':'webkitAnimationEnd'
};
for(var t in transitions){
if( transitions.hasOwnProperty(t) && el.style[t] !== undefined ){
return transitions[t];
}
}
}
$("#elementToListenTo")
.on(whichTransitionEvent(),
function(e){
// What you want to do here
$('.loginAnimado').removeClass('loginAnimado');
$(this).off(e);
});