Fixed a problem with animations with a duration of 0 not working properly for hide and show.

This commit is contained in:
jeresig 2009-11-30 14:22:24 -05:00
parent 21dead4691
commit 25c188b6d2
2 changed files with 22 additions and 17 deletions

View file

@ -18,8 +18,8 @@ function genFx( type, num ){
} }
jQuery.fn.extend({ jQuery.fn.extend({
show: function(speed,callback){ show: function( speed, callback ) {
if ( speed ) { if ( typeof speed !== "undefined" ) {
return this.animate( genFx("show", 3), speed, callback); return this.animate( genFx("show", 3), speed, callback);
} else { } else {
for ( var i = 0, l = this.length; i < l; i++ ){ for ( var i = 0, l = this.length; i < l; i++ ){
@ -58,8 +58,8 @@ jQuery.fn.extend({
} }
}, },
hide: function(speed,callback){ hide: function( speed, callback ) {
if ( speed ) { if ( typeof speed !== "undefined" ) {
return this.animate( genFx("hide", 3), speed, callback); return this.animate( genFx("hide", 3), speed, callback);
} else { } else {
for ( var i = 0, l = this.length; i < l; i++ ){ for ( var i = 0, l = this.length; i < l; i++ ){

View file

@ -86,32 +86,37 @@ test("animate with no properties", function() {
}); });
test("animate duration 0", function() { test("animate duration 0", function() {
expect(7); expect(11);
stop(); stop();
var $elems = jQuery([{ a:0 },{ a:0 }]), var $elems = jQuery([{ a:0 },{ a:0 }]), counter = 0;
counter = 0,
count = function(){
counter++;
};
equals( jQuery.timers.length, 0, "Make sure no animation was running from another test" ); equals( jQuery.timers.length, 0, "Make sure no animation was running from another test" );
$elems.eq(0).animate( {a:1}, 0, count ); $elems.eq(0).animate( {a:1}, 0, function(){
ok( true, "Animate a simple property." );
counter++;
});
// Failed until [6115] // Failed until [6115]
equals( jQuery.timers.length, 0, "Make sure synchronic animations are not left on jQuery.timers" ); equals( jQuery.timers.length, 0, "Make sure synchronic animations are not left on jQuery.timers" );
equals( counter, 1, "One synchronic animations" ); equals( counter, 1, "One synchronic animations" );
$elems.animate( { a:2 }, 0, count ); $elems.animate( { a:2 }, 0, function(){
ok( true, "Animate a second simple property." );
counter++;
});
equals( counter, 3, "Multiple synchronic animations" ); equals( counter, 3, "Multiple synchronic animations" );
$elems.eq(0).animate( {a:3}, 0, count ); $elems.eq(0).animate( {a:3}, 0, function(){
$elems.eq(1).animate( {a:3}, 20, function(){ ok( true, "Animate a third simple property." );
count(); counter++;
});
$elems.eq(1).animate( {a:3}, 200, function(){
counter++;
// Failed until [6115] // Failed until [6115]
equals( counter, 5, "One synchronic and one asynchronic" ); equals( counter, 5, "One synchronic and one asynchronic" );
start(); start();
@ -119,10 +124,10 @@ test("animate duration 0", function() {
var $elem = jQuery("<div />"); var $elem = jQuery("<div />");
$elem.show(0, function(){ $elem.show(0, function(){
ok(true, "Show's callback with no duration"); ok(true, "Show callback with no duration");
}); });
$elem.hide(0, function(){ $elem.hide(0, function(){
ok(true, "Show's callback with no duration"); ok(true, "Hide callback with no duration");
}); });
}); });