diff --git a/src/effects.js b/src/effects.js index b03036ce3..f939ae607 100644 --- a/src/effects.js +++ b/src/effects.js @@ -490,9 +490,7 @@ jQuery.fn.extend({ doAnimation = function() { // Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - doAnimation.finish = function() { - anim.stop( true ); - }; + // Empty animations, or finishing resolves immediately if ( empty || jQuery._data( this, "finish" ) ) { anim.stop( true ); @@ -572,8 +570,8 @@ jQuery.fn.extend({ // empty the queue first jQuery.queue( this, type, [] ); - if ( hooks && hooks.cur && hooks.cur.finish ) { - hooks.cur.finish.call( this ); + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); } // look for any active animations, and finish them diff --git a/src/queue.js b/src/queue.js index d4c3f0040..c5a0cbd7d 100644 --- a/src/queue.js +++ b/src/queue.js @@ -35,7 +35,6 @@ jQuery.extend({ startLength--; } - hooks.cur = fn; if ( fn ) { // Add a progress sentinel to prevent the fx queue from being diff --git a/test/unit/effects.js b/test/unit/effects.js index fc40e49d2..e50fc2185 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -2134,21 +2134,47 @@ test( ".finish( \"custom\" ) - custom queue animations", function() { }); test( ".finish() calls finish of custom queue functions", function() { - function queueTester() { - + function queueTester( next, hooks ) { + hooks.stop = function( gotoEnd ) { + inside++; + equal( this, div[0] ); + ok( gotoEnd, "hooks.stop(true) called"); + }; } - var div = jQuery( "