In short, there's no real support for this.
The reason is in how it works, it's a simple (well, as simple as possible) forward-only model:
.animate()
is done via a setInterval()
for most things (see source here). It's a simplistic calculation in most cases, we need to go from value x
to value y
over n
milliseconds. The timer for jQuery happens every 13ms, every animation in progress updates (moves a step) every 13 ms. It divides the (duration/total time) and calls the update step for the element to set it's style value for that step.
You can't "fast-forward" really, as you'd have to adjust properties that aren't exposed once you kick off the animation. You can skip to the end (via .stop(boo, true)
) of any animation, or .queue()
and .dequeue()
when needed...or even mess with the queue directly, at $.data(element,'fxeueue')
, but that's it. As for rewind...well, animations are cleaned up (via a .dequeue()
move) so that's out too (besides the interval calculations all being forward-looking).
So no, there's no way to do this, at least not with the built-in animation system. That's not to say it's not possible, rather that the code already written in jQurey core won't help you much here.