From c436ae04de80f8d232b5456f605331ecfaba4f49 Mon Sep 17 00:00:00 2001 From: Corey Frang Date: Sat, 23 Jun 2012 16:50:57 -0500 Subject: [PATCH] Completes #11799: Maybe .progress() was cooler than I thought. Generate a .progress() for each step of an animation, once all properties are changed. Closes gh-835. --- src/effects.js | 5 ++++- test/unit/effects.js | 22 +++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/effects.js b/src/effects.js index 7c43dc178..f1bbed763 100644 --- a/src/effects.js +++ b/src/effects.js @@ -91,6 +91,8 @@ function Animation( elem, properties, options ) { animation.tweens[ index ].run( percent ); } + deferred.notifyWith( elem, [ animation, percent, remaining ]); + if ( percent < 1 && length ) { return remaining; } else { @@ -159,7 +161,8 @@ function Animation( elem, properties, options ) { ); // attach callbacks from options - return animation.done( animation.opts.done, animation.opts.complete ) + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); } diff --git a/test/unit/effects.js b/test/unit/effects.js index 56951d360..392d7e74b 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -1665,12 +1665,16 @@ asyncTest( "animate does not change start value for non-px animation (#7109)", 1 }); }); -asyncTest("Animation callbacks (#11797)", 8, function() { +asyncTest("Animation callbacks (#11797)", 12, function() { var targets = jQuery("#foo").children(), - done = false; + done = false, + expectedProgress = 0; targets.eq( 0 ).animate( {}, { - duration: 10, + duration: 1, + progress: function( anim, percent ) { + equal( percent, 0, "empty: progress 0" ); + }, done: function() { ok( true, "empty: done" ); }, @@ -1689,7 +1693,10 @@ asyncTest("Animation callbacks (#11797)", 8, function() { targets.eq( 1 ).animate({ opacity: 0 }, { - duration: 10, + duration: 1, + progress: function( anim, percent ) { + equal( percent, 0, "stopped: progress 0" ); + }, done: function() { ok( false, "stopped: done" ); }, @@ -1707,7 +1714,12 @@ asyncTest("Animation callbacks (#11797)", 8, function() { targets.eq( 2 ).animate({ opacity: 0 }, { - duration: 10, + duration: 1, + progress: function( anim, percent ) { + equal( percent, expectedProgress, "async: progress " + expectedProgress ); + // once at 0, once at 1 + expectedProgress++; + }, done: function() { ok( true, "async: done" ); },