I have several elements that are animated in (several) durations each. I am animating using CSS3 transitions using the jQuery library and the transitionend helper function from David Walsh .
My problem is that the transitionend event is NOT triggered! (In Chrome and Firefox)
My code is:
var $children = $container.find('.slideblock').children(); if(Modernizr.csstransitions && Modernizr.csstransforms3d) { if($.browser.webkit === true) { $children.css('-webkit-transform-style','preserve-3d') } $children.each(function(i){ $(this).on(whichTransitionEvent,function () { $(this).remove(); }); $(this).show().css('animation','slideOutToRight ' + ((Math.random() / 2) + .5) + 's'); }); }
Update
The variable whichTransitionEvent points to a self- whichTransitionEvent function that returns a string containing the name of the event:
var whichTransitionEvent = (function (){ var t; var el = document.createElement('fakeelement'); var transitions = { 'transition' :'transitionEnd', 'OTransition' :'oTransitionEnd', 'MSTransition' :'msTransitionEnd', 'MozTransition' :'transitionend', 'WebkitTransition' :'webkitTransitionEnd' } for(t in transitions){ if( el.style[t] !== undefined ){ return transitions[t]; } } } ()); console.log(whichTransitionEvent);
source share