Fix for #1823 bug in animate {queue:false} plus a unit test.
authorDavid Serduke <davidserduke@gmail.com>
Fri, 16 Nov 2007 17:49:12 +0000 (17:49 +0000)
committerDavid Serduke <davidserduke@gmail.com>
Fri, 16 Nov 2007 17:49:12 +0000 (17:49 +0000)
src/fx.js
test/unit/fx.js

index a4f4ef8..4ccb089 100644 (file)
--- a/src/fx.js
+++ b/src/fx.js
@@ -201,7 +201,8 @@ jQuery.extend({
                // Queueing
                opt.old = opt.complete;
                opt.complete = function(){
-                       jQuery(this).dequeue();
+                       if ( opt.queue !== false )
+                               jQuery(this).dequeue();
                        if ( jQuery.isFunction( opt.old ) )
                                opt.old.apply( this );
                };
index 1f9e674..6c5bb55 100644 (file)
@@ -11,6 +11,29 @@ test("animate(Hash, Object, Function)", function() {
        });
 });
 
+test("animate option (queue === false)", function () {
+  expect(1);
+  stop();
+  
+  var order = [];
+
+  var $foo = $("#foo");
+  $foo.animate({width:'100px'}, 200, function () {
+    // should finish after unqueued animation so second
+    order.push(2);
+  });
+  $foo.animate({fontSize:'2em'}, {queue:false, duration:10, complete:function () {
+    // short duration and out of queue so should finish first
+    order.push(1);
+  }});
+  $foo.animate({height:'100px'}, 10, function() {
+    // queued behind the first animation so should finish third 
+    order.push(3);
+    isSet( order, [ 1, 2, 3] );
+    start();
+  });
+});
+
 test("stop()", function() {
        expect(3);
        stop();