Make sure that animated show resets the display correctly. Fixes #5130.
authorjeresig <jeresig@gmail.com>
Sun, 6 Dec 2009 02:06:14 +0000 (21:06 -0500)
committerjeresig <jeresig@gmail.com>
Sun, 6 Dec 2009 02:06:14 +0000 (21:06 -0500)
src/fx.js
test/unit/fx.js

index fa17072..529fd4c 100644 (file)
--- a/src/fx.js
+++ b/src/fx.js
@@ -359,7 +359,9 @@ jQuery.fx.prototype = {
                                        this.elem.style.overflow = this.options.overflow;
 
                                        // Reset the display
-                                       this.elem.style.display = this.options.display;
+                                       var old = jQuery.data(this.elem, "olddisplay");
+                                       this.elem.style.display = old ? old : this.options.display;
+
                                        if ( jQuery.css(this.elem, "display") == "none" ) {
                                                this.elem.style.display = "block";
                                        }
index 5b97dc3..9b2f9d8 100644 (file)
@@ -41,6 +41,43 @@ test("show()", function() {
        });
 });
 
+test("show(Number) - other displays", function() {
+       expect(15);
+       reset();
+       stop();
+
+       jQuery("#main").append('<div id="show-tests"><div><p><a href="#"></a></p><code></code><pre></pre><span></span></div><table><thead><tr><th></th></tr></thead><tbody><tr><td></td></tr></tbody></table><ul><li></li></ul></div>');
+
+       var old = jQuery("#show-tests table").show().css("display") !== "table",
+               num = 0;
+
+       var test = {
+               "div"      : "block",
+               "p"        : "block",
+               "a"        : "inline",
+               "code"     : "inline",
+               "pre"      : "block",
+               "span"     : "inline",
+               "table"    : old ? "block" : "table",
+               "thead"    : old ? "block" : "table-header-group",
+               "tbody"    : old ? "block" : "table-row-group",
+               "tr"       : old ? "block" : "table-row",
+               "th"       : old ? "block" : "table-cell",
+               "td"       : old ? "block" : "table-cell",
+               "ul"       : "block",
+               "li"       : old ? "block" : "list-item"
+       };
+
+       jQuery.each(test, function(selector, expected) {
+               var elem = jQuery(selector, "#show-tests").show(1, function() {
+                       equals( elem.css("display"), expected, "Show using correct display type for " + selector );
+                       if ( ++num === 15 ) {
+                               start();
+                       }
+               });
+       });
+});
+
 test("animate(Hash, Object, Function)", function() {
        expect(1);
        stop();