Moved logic for handling .animate({}), doesn't queue anymore. Fixes #5459.

This commit is contained in:
jeresig 2009-12-21 11:11:03 -05:00
parent f0505c6d75
commit 0d5bd17461
2 changed files with 15 additions and 5 deletions

8
src/effects.js vendored
View file

@ -108,6 +108,10 @@ jQuery.fn.extend({
animate: function( prop, speed, easing, callback ) { animate: function( prop, speed, easing, callback ) {
var optall = jQuery.speed(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() { return this[ optall.queue === false ? "each" : "queue" ](function() {
var opt = jQuery.extend({}, optall), p, var opt = jQuery.extend({}, optall), p,
hidden = this.nodeType === 1 && jQuery(this).is(":hidden"), 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 // For JS strict compliance
return true; return true;
}); });

12
test/unit/effects.js vendored
View file

@ -120,7 +120,7 @@ test("animate option (queue === false)", function () {
*/ */
test("animate with no properties", function() { test("animate with no properties", function() {
expect(1); expect(2);
var divs = jQuery("div"), count = 0; 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." ); 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() { test("animate duration 0", function() {