]> source.dussan.org Git - jquery.git/commitdiff
Completes #11799: Maybe .progress() was cooler than I thought.
authorCorey Frang <gnarf@gnarf.net>
Sat, 23 Jun 2012 21:50:57 +0000 (16:50 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Mon, 25 Jun 2012 14:34:25 +0000 (10:34 -0400)
Generate a .progress() for each step of an animation, once all properties are changed. Closes gh-835.

src/effects.js
test/unit/effects.js

index 7c43dc178191c46a29b744009f12c1532314165f..f1bbed763b44ca432fb773ec084b93104e111cca 100644 (file)
@@ -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 );
 }
index 56951d360f2fab29401f68be4fd6c265c0a1eb36..392d7e74b9f2d9aa5b774483ad47da684110cc9a 100644 (file)
@@ -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" );
                },