Has jQuery an animating
-event (not :animated
)? Something like step
, but as extra method/event?
Currently I trigger a custom event in each animations step-function:
$('.foo').animate({property: 'value'}, {
step: function(now, fx){
$(this).trigger('animating', [now, fx])
}
});
$('.foo').on('animating', function(e, now, fx){
// do what you want
});
I think there's somewhere in the wild assuredly a better solution. Any ideas/approaches?
Update
I've written a (of course not awesome) special event, what make's handling this problem a bit easier:
(function($){
var oldStep = $.fx.step._default;
jQuery.event.special.animating = { };
$.fx.step._default = function( fx ) {
$(fx.elem).trigger('animating', fx);
oldStep.apply( this, arguments );
};
}(jQuery));
This doesn't work with jQuery 1.7+ since jQuery's animation method was changed, or rather the step function is not longer extendable ($.fx.step results in an empty object
).
jQuery.fx
refers to Tween.prototype.init;
&
jQuery.fx.step
to {};
So it can't work...
I look still further on every tip!
doCustomEvent(e, now, fx);
Do you want a different action to happen on each step? – Cadellevent
behaves like the original. – Recrementswitch(stepNr)
inside thestep: function(){}
which would trigger a different function on each step case? Considering you know how many steps your animation goes through. – Cadellfx.start
andfx.end
... – Recrement