diff options
-rw-r--r-- | src/effects.js | 10 | ||||
-rw-r--r-- | test/unit/effects.js | 35 |
2 files changed, 42 insertions, 3 deletions
diff --git a/src/effects.js b/src/effects.js index 7e46a5c3f..3edb96fae 100644 --- a/src/effects.js +++ b/src/effects.js @@ -126,7 +126,7 @@ jQuery.fn.extend({ // Do not change referenced properties as per-property easing will be lost prop = jQuery.extend( {}, prop ); - return this[ optall.queue === false ? "each" : "queue" ](function() { + function doAnimation() { // XXX 'this' does not always have a nodeName when running the // test suite @@ -240,7 +240,11 @@ jQuery.fn.extend({ // For JS strict compliance return true; - }); + } + + return optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue || "fx", doAnimation ); }, stop: function( clearQueue, gotoEnd ) { @@ -335,7 +339,7 @@ jQuery.extend({ } if ( opt.queue !== false ) { - jQuery.dequeue( this ); + jQuery.dequeue( this, opt.queue || "fx" ); } else if ( noUnmark !== false ) { jQuery._unmark( this ); } diff --git a/test/unit/effects.js b/test/unit/effects.js index 74d4c7642..d13bd587c 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -357,6 +357,41 @@ test("animate option (queue === false)", function () { }); */ +asyncTest( "animate option { queue: 'name' }", function() { + expect( 5 ); + + var foo = jQuery( "#foo" ), + origWidth = foo.width(), + order = []; + + foo.animate( { width: origWidth + 100 }, { + queue: 'name', + duration: 1, + complete: function() { + + // second callback function + order.push( 2 ); + equals( foo.width(), origWidth + 100, "Animation ended" ); + equals( foo.queue("name").length, 1, "Queue length of 'name' queue" ); + } + }).queue( "name", function( next ) { + + // last callback function + deepEqual( order, [ 1, 2 ], "Callbacks in expected order" ); + start(); + }); + + setTimeout( function() { + + // this is the first callback function that should be called + order.push( 1 ); + equals( foo.width(), origWidth, "Animation does not start on its own." ); + equals( foo.queue("name").length, 2, "Queue length of 'name' queue" ); + foo.dequeue( "name" ); + }, 100 ); + +}); + test("animate with no properties", function() { expect(2); |