X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Ffx%2Ffx.js;h=789220f11574ce012af3814a7641eef7c3adc723;hb=0e540ec1b170c11cab11045b4965a927cb44ee34;hp=30838956e1bea91690505214d0247dbf136c38bc;hpb=044d47a504b73b66518852374e04024d22a75662;p=jquery.git diff --git a/src/fx/fx.js b/src/fx/fx.js index 3083895..789220f 100644 --- a/src/fx/fx.js +++ b/src/fx/fx.js @@ -305,14 +305,6 @@ jQuery.fn.extend({ * left: 50, opacity: 'show' * }, 500); * - * @test stop(); - * var hash = {opacity: 'show'}; - * var hashCopy = $.extend({}, hash); - * $('#foo').animate(hash, 'fast', function() { - * ok( hash.opacity == hashCopy.opacity, 'Check if animate changed the hash parameter' ); - * start(); - * }); - * * @name animate * @type jQuery * @param Hash params A set of style attributes that you wish to animate, and to what end. @@ -422,6 +414,13 @@ jQuery.extend({ // The styles var y = z.el.style; + + // Store display property + var oldDisplay = jQuery.css(z.el, 'display'); + // Set display property to block for animation + y.display = "block"; + // Make sure that nothing sneaks out + y.overflow = "hidden"; // Simple function for setting a style value z.a = function(){ @@ -432,8 +431,6 @@ jQuery.extend({ jQuery.attr(y, "opacity", z.now); // Let attr handle opacity else if ( parseInt(z.now) ) // My hate for IE will never die y[prop] = parseInt(z.now) + "px"; - - y.display = "block"; }; // Figure out the maximum number to run to @@ -487,9 +484,30 @@ jQuery.extend({ // Begin the animation z.custom(z.el.orig[prop], 0); }; + + //Simple 'toggle' function + z.toggle = function() { + if ( !z.el.orig ) z.el.orig = {}; - // Make sure that nothing sneaks out - y.overflow = "hidden"; + // Remember where we started, so that we can go back to it later + z.el.orig[prop] = this.cur(); + + if(oldDisplay == 'none') { + z.o.show = true; + + // Stupid IE, look what you made me do + if ( prop != "opacity" ) + y[prop] = "1px"; + + // Begin the animation + z.custom(0, z.el.orig[prop]); + } else { + z.o.hide = true; + + // Begin the animation + z.custom(z.el.orig[prop], 0); + } + }; // Each step of an animation z.step = function(firstNum, lastNum){ @@ -513,13 +531,15 @@ jQuery.extend({ if ( done ) { // Reset the overflow y.overflow = ''; + + // Reset the display + y.display = oldDisplay; + if (jQuery.css(z.el, 'display') == 'none') + y.display = 'block'; // Hide the element if the "hide" operation was done if ( z.o.hide ) y.display = 'none'; - // Otherwise reset the display property - else if ( z.o.show ) - y.display = ''; // Reset the properties, if the item has been hidden or shown if ( z.o.hide || z.o.show )