Split apart jQuery.css into jQuery.css (computed values) and jQuery.style (currently...
[jquery.git] / src / dimensions.js
index a53254d..698f5f4 100644 (file)
@@ -1,26 +1,38 @@
+(function( jQuery ) {
+
 // Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
+jQuery.each([ "Height", "Width" ], function( i, name ) {
 
        var type = name.toLowerCase();
 
        // innerHeight and innerWidth
-       jQuery.fn["inner" + name] = function(){
+       jQuery.fn["inner" + name] = function() {
                return this[0] ?
-                       jQuery.css( this[0], type, false, "padding" ) :
+                       parseFloat( jQuery.css( this[0], type, undefined, "padding" ), 10 ) :
                        null;
        };
 
        // outerHeight and outerWidth
-       jQuery.fn["outer" + name] = function(margin) {
+       jQuery.fn["outer" + name] = function( margin ) {
                return this[0] ?
-                       jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
+                       parseFloat( jQuery.css( this[0], type, undefined, margin ? "margin" : "border" ), 10 ) :
                        null;
        };
 
        jQuery.fn[ type ] = function( size ) {
                // Get window width or height
                var elem = this[0];
-               if ( !elem ) return null;
+               if ( !elem ) {
+                       return size == null ? null : this;
+               }
+               
+               if ( jQuery.isFunction( size ) ) {
+                       return this.each(function( i ) {
+                               var self = jQuery( this );
+                               self[ type ]( size.call( this, i, self[ type ]() ) );
+                       });
+               }
+
                return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
                        // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
                        elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
@@ -38,10 +50,12 @@ jQuery.each([ "Height", "Width" ], function(i, name){
                                // Get or set width or height on the element
                                size === undefined ?
                                        // Get width or height on the element
-                                       jQuery.css( elem, type ) :
+                                       parseFloat( jQuery.css( elem, type ), 10 ) :
 
                                        // Set the width or height on the element (default to pixels if value is unitless)
                                        this.css( type, typeof size === "string" ? size : size + "px" );
        };
 
 });
+
+})( jQuery );