Overflow revert was completely borked when you animated multiple properties (like...
authorJohn Resig <jeresig@gmail.com>
Thu, 5 Jul 2007 04:27:46 +0000 (04:27 +0000)
committerJohn Resig <jeresig@gmail.com>
Thu, 5 Jul 2007 04:27:46 +0000 (04:27 +0000)
src/fx/fx.js

index acd5122..4c38413 100644 (file)
@@ -315,10 +315,22 @@ jQuery.fn.extend({
                                opt = jQuery.speed(speed, easing, callback),
                                self = this;
                        
-                       for ( var p in prop )
+                       for ( var p in prop ) {
                                if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
                                        return jQuery.isFunction(opt.complete) && opt.complete.apply(this);
 
+                               if ( p == "height" || p == "width" ) {
+                                       // Store display property
+                                       opt.display = jQuery.css(this, "display");
+
+                                       // Make sure that nothing sneaks out
+                                       opt.overflow = this.style.overflow;
+                               }
+                       }
+
+                       if ( opt.overflow != null )
+                               this.style.overflow = "hidden";
+
                        this.curAnim = jQuery.extend({}, prop);
                        
                        jQuery.each( prop, function(name, val){
@@ -422,15 +434,6 @@ jQuery.extend({
                // The styles
                var y = elem.style;
                
-               if ( prop == "height" || prop == "width" ) {
-                       // Store display property
-                       var oldDisplay = jQuery.css(elem, "display");
-
-                       // Make sure that nothing sneaks out
-                       var oldOverflow = y.overflow;
-                       y.overflow = "hidden";
-               }
-
                // Simple function for setting a style value
                z.a = function(){
                        if ( options.step )
@@ -529,12 +532,12 @@ jQuery.extend({
                                                done = false;
 
                                if ( done ) {
-                                       if ( oldDisplay != null ) {
+                                       if ( options.display != null ) {
                                                // Reset the overflow
-                                               y.overflow = oldOverflow;
+                                               y.overflow = options.overflow;
                                        
                                                // Reset the display
-                                               y.display = oldDisplay;
+                                               y.display = options.display;
                                                if ( jQuery.css(elem, "display") == "none" )
                                                        y.display = "block";
                                        }