X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffx%2Ffx.js;h=72bfbf83ab86d2898fba542b49f2146e4698873b;hb=7caca06cfc28fab22ec9c3a2d1363fec8d8c1951;hp=45cc2d917c8862395b670698267100185cceb47e;hpb=a42a8e5afa2e4ca7690081bce9899d5e6e0d1cf4;p=jquery.git diff --git a/src/fx/fx.js b/src/fx/fx.js index 45cc2d9..72bfbf8 100644 --- a/src/fx/fx.js +++ b/src/fx/fx.js @@ -141,6 +141,13 @@ jQuery.fn.extend({ slideUp: function(speed,callback){ return this.animate({height: "hide"}, speed, callback); }, + + slideToggle: function(speed,callback){ + return this.each(function(){ + var state = $(this).is(":hidden") ? "show" : "hide"; + $(this).animate({height: state}, speed, callback); + }); + }, /** * Fade in all matched elements by adjusting their opacity. @@ -373,7 +380,8 @@ jQuery.extend({ // The users options z.o = { duration: options.duration || 400, - complete: options.complete + complete: options.complete, + step: options.step }; // The element @@ -384,6 +392,9 @@ jQuery.extend({ // Simple function for setting a style value z.a = function(){ + if ( options.step ) + options.step.apply( elem, [ z.now ] ); + if ( prop == "opacity" ) { if (z.now == 1) z.now = 0.9999; if (window.ActiveXObject) @@ -404,7 +415,8 @@ jQuery.extend({ // Get the current size z.cur = function(){ - return parseFloat( jQuery.curCSS(z.el, prop) ) || z.max(); + var r = parseFloat( jQuery.curCSS(z.el, prop) ); + return r && r > -10000 ? r : z.max(); }; // Start an animation from one number to another @@ -475,18 +487,19 @@ jQuery.extend({ // Reset the overflow y.overflow = z.el.oldOverflow; - // If a callback was provided, execute it - if( z.o.complete && z.o.complete.constructor == Function ) - // Execute the complete function - z.o.complete.apply( z.el ); - // Reset the property, if the item has been hidden if ( z.o.hide ) y[ prop ] = z.el.orig[ prop ].constructor == Number && prop != "opacity" ? z.el.orig[prop] + "px" : z.el.orig[prop]; // set its height and/or width to auto - jQuery.setAuto( z.el, prop ); + if ( prop == 'height' || prop == 'width' ) + jQuery.setAuto( z.el, prop ); + + // If a callback was provided, execute it + if( z.o.complete && z.o.complete.constructor == Function ) + // Execute the complete function + z.o.complete.apply( z.el ); } else { // Figure out where in the animation we are and set the number var p = (t - this.startTime) / z.o.duration;