Skip to main content

Bug Tracker

Side navigation

Ticket #1629: 1629.diff


File 1629.diff, 2.0 KB (added by davidserduke, December 10, 2007 10:36PM UTC)

new proposed patch

Index: src/core.js
===================================================================
--- src/core.js	(revision 4094)
+++ src/core.js	(working copy)
@@ -773,52 +773,18 @@
 
 	css: function( elem, name, force ) {
 		if ( name == "height" || name == "width" ) {
-			var old = {}, height, width;
+			var height, width, props = { position:"absolute", visibility:"hidden", display:"block" };
 
-			// Revert the padding and border widths to get the
-			// correct height/width values
-			jQuery.each([ "Top", "Bottom", "Right", "Left" ], function(){
-				old[ "padding" + this ] = 0;
-				old[ "border" + this + "Width" ] = 0;
-			});
+			function setWH() {
+				width = elem.clientWidth;
+				height = elem.clientHeight;
+			}
+			if ( jQuery(elem).is(":visible") )
+				setWH();
+			else
+				jQuery.swap( elem, props, setWH );
 
-			// Swap out the padding/border values temporarily
-			jQuery.swap( elem, old, function() {
-
-				// If the element is visible, then the calculation is easy
-				if ( jQuery( elem ).is(":visible") ) {
-					height = elem.offsetHeight;
-					width = elem.offsetWidth;
-
-				// Otherwise, we need to flip out more values
-				} else {
-					elem = jQuery( elem.cloneNode(true) )
-						.find(":radio").removeAttr("checked").removeAttr("defaultChecked").end()
-						.css({
-							visibility: "hidden",
-							position: "absolute",
-							display: "block",
-							right: "0",
-							left: "0"
-						}).appendTo( elem.parentNode )[0];
-
-					var position = jQuery.css( elem.parentNode, "position" ) || "static";
-					if ( position == "static" )
-						elem.parentNode.style.position = "relative";
-
-					height = elem.clientHeight;
-					width = elem.clientWidth;
-
-					if ( position == "static" )
-						elem.parentNode.style.position = "static";
-
-					elem.parentNode.removeChild( elem );
-				}
-			});
-
-			return name == "height" ?
-				height :
-				width;
+			return name == "width" ? width : height;
 		}
 
 		return jQuery.curCSS( elem, name, force );

Download in other formats:

Original Format