diff --git a/src/effects.js b/src/effects.js index c562d033..5d656c96 100644 --- a/src/effects.js +++ b/src/effects.js @@ -108,6 +108,10 @@ jQuery.fn.extend({ animate: function( prop, speed, easing, callback ) { var optall = jQuery.speed(speed, easing, callback); + if ( jQuery.isEmptyObject( prop ) ) { + return this.each( optall.complete ); + } + return this[ optall.queue === false ? "each" : "queue" ](function() { var opt = jQuery.extend({}, optall), p, hidden = this.nodeType === 1 && jQuery(this).is(":hidden"), @@ -181,10 +185,6 @@ jQuery.fn.extend({ } }); - if ( jQuery.isEmptyObject( prop ) ) { - return optall.complete.call(this); - } - // For JS strict compliance return true; }); diff --git a/test/unit/effects.js b/test/unit/effects.js index 2c5616dd..cefcc15a 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -120,7 +120,7 @@ test("animate option (queue === false)", function () { */ test("animate with no properties", function() { - expect(1); + expect(2); var divs = jQuery("div"), count = 0; @@ -129,6 +129,16 @@ test("animate with no properties", function() { }); equals( divs.length, count, "Make sure that callback is called for each element in the set." ); + + stop(); + + var foo = jQuery("#foo"); + + foo.animate({}); + foo.animate({top: 10}, 100, function(){ + ok( true, "Animation was properly dequeued." ); + start(); + }); }); test("animate duration 0", function() {