From c80bc227280e9708dc9c3613ece9397f55f382ed Mon Sep 17 00:00:00 2001 From: Mike Sherov Date: Thu, 7 Jun 2012 11:08:31 -0400 Subject: [PATCH] Don't swap to measure dimensions unless the element is display:none. #807 Fixes #11293 --- src/css.js | 2 +- test/unit/dimensions.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/css.js b/src/css.js index 4496594dc..94f8d8903 100644 --- a/src/css.js +++ b/src/css.js @@ -480,7 +480,7 @@ jQuery.each([ "height", "width" ], function( i, name ) { jQuery.cssHooks[ name ] = { get: function( elem, computed, extra ) { if ( computed ) { - if ( elem.offsetWidth !== 0 ) { + if ( elem.offsetWidth !== 0 || curCSS( elem, "display" ) !== "none" ) { return getWidthOrHeight( elem, name, extra ); } else { return jQuery.swap( elem, cssShow, function() { diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index 53e37b95d..6fc346dce 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -299,6 +299,16 @@ test("outerWidth(true) returning % instead of px in Webkit, see #10639", functio equal( el.outerWidth(true), 400, "outerWidth(true) and css('margin') returning % instead of px in Webkit, see #10639" ); }); +test( "getting dimensions of zero width/height table elements shouldn't alter dimensions", function() { + expect( 1 ); + + var table = jQuery("
a
a
").appendTo("#qunit-fixture"), + elem = table.find("tr:eq(0) td:eq(0)"); + + table.find("td").css({ margin: 0, padding: 0 }); + equal( elem.width(), elem.width(), "width() doesn't alter dimension values" ); +}); + test("box-sizing:border-box child of a hidden elem (or unconnected node) has accurate inner/outer/Width()/Height() see #10413", function() { expect(16); -- 2.39.5