fix show issue in IE 6. "olddisplay" is sometimes undefined and IE 6 does not like...
[jquery.git] / src / fx.js
index 39456e0..c949bdc 100644 (file)
--- a/src/fx.js
+++ b/src/fx.js
@@ -44,9 +44,15 @@ jQuery.fn.extend({
                                                elemdisplay[ tagName ] = display;
                                        }
                                        
-                                       this[i].style.display = jQuery.data(this[i], "olddisplay", display);
+                                       jQuery.data(this[i], "olddisplay", display);
                                }
                        }
+
+                       // Set the display of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( var i = 0, l = this.length; i < l; i++ ){
+                               this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+                       }
                        
                        return this;
                }
@@ -60,8 +66,14 @@ jQuery.fn.extend({
                                var old = jQuery.data(this[i], "olddisplay");
                                if ( !old && old !== "none" )
                                        jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+                       }
+
+                       // Set the display of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( var i = 0, l = this.length; i < l; i++ ){
                                this[i].style.display = "none";
                        }
+
                        return this;
                }
        },
@@ -273,7 +285,7 @@ jQuery.fx.prototype = {
 
                t.elem = this.elem;
 
-               if ( t() && jQuery.timers.push(t) == 1 ) {
+               if ( t() && jQuery.timers.push(t) && !timerId ) {
                        timerId = setInterval(function(){
                                var timers = jQuery.timers;
 
@@ -283,6 +295,7 @@ jQuery.fx.prototype = {
 
                                if ( !timers.length ) {
                                        clearInterval( timerId );
+                                       timerId = undefined;
                                }
                        }, 13);
                }