aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/effects.js10
-rw-r--r--test/unit/effects.js35
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);