]> source.dussan.org Git - jquery.git/commitdiff
Effects: Respect display value on inline elements
authorOleg Gaidarenko <markelog@gmail.com>
Sat, 26 Apr 2014 17:24:05 +0000 (21:24 +0400)
committerOleg Gaidarenko <markelog@gmail.com>
Wed, 30 Apr 2014 13:14:22 +0000 (17:14 +0400)
Take "olddisplay" value into the account

Fixes #14824
Closes gh-1566
Ref 73fe17299a840a8a7f3ffffcac15e32a88bd3d66

(cherry-picked from c34dbf5a8d135e0f873ab7a76d1c8f8e316f31e4)
Conflicts:
src/effects.js

src/effects.js
test/data/testsuite.css
test/unit/effects.js

index 223c8e549315c9eb6a7a74c2585a2e18f293f37f..0469eefb62cc495a74700290881e224055e82416 100644 (file)
@@ -116,7 +116,7 @@ function createTween( value, prop, animation ) {
 
 function defaultPrefilter( elem, props, opts ) {
        /* jshint validthis: true */
-       var prop, value, toggle, tween, hooks, oldfire, display,
+       var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
                anim = this,
                orig = {},
                style = elem.style,
@@ -160,9 +160,12 @@ function defaultPrefilter( elem, props, opts ) {
                // Set display property to inline-block for height/width
                // animations on inline elements that are having width/height animated
                display = jQuery.css( elem, "display" );
+
                // Test default display if display is currently "none"
-               if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" &&
-                               jQuery.css( elem, "float" ) === "none" ) {
+               checkDisplay = display === "none" ?
+                       jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+               if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
 
                        // inline-level elements accept inline-block;
                        // block-level elements need to be inline with layout
index 134993c0114e54717e484456b18ba39eaf65fb59..545d8ce5df674c3d8e10d250a81ac676e5ad4738 100644 (file)
@@ -152,4 +152,7 @@ section { background:#f0f; display:block; }
 /* #11971 */
 #foo { background: url(1x1.jpg) right bottom no-repeat; }
 
+/* #14824 */
+#span-14824 { display: block; }
+
 #display { display: list-item !important; }
index a2785145911d402bb8f79f105585850b7ef93c8c..e857b229b8e70e57bbafad6ce564af1d048ab5cb 100644 (file)
@@ -2214,4 +2214,28 @@ test( "slideDown() after stop() (#13483)", 2, function() {
                clock.tick( 10 );
 });
 
+test( "Respect display value on inline elements (#14824)", 2, function() {
+       var clock = this.clock,
+               fromStyleSheet = jQuery( "<span id='span-14824' />" ),
+               fromStyleAttr = jQuery( "<span style='display: block;' />" );
+
+       jQuery( "#qunit-fixture" ).append( fromStyleSheet, fromStyleAttr );
+
+       fromStyleSheet.slideUp(function() {
+               jQuery( this ).slideDown( function() {
+                       equal( jQuery( this ).css( "display" ), "block",
+                               "Respect previous display value (from stylesheet) on span element" );
+               });
+       });
+
+       fromStyleAttr.slideUp( function() {
+               jQuery( this ).slideDown( function() {
+                       equal( jQuery( this ).css( "display" ), "block",
+                               "Respect previous display value (from style attribute) on span element" );
+               });
+       });
+
+       clock.tick( 800 );
+});
+
 })();