| (function( jQuery ) { |
| |
| // Create innerHeight, innerWidth, outerHeight and outerWidth methods |
| jQuery.each([ "Height", "Width" ], function( i, name ) { |
| |
| var type = name.toLowerCase(); |
| |
| // innerHeight and innerWidth |
| jQuery.fn["inner" + name] = function() { |
| return this[0] ? |
| parseFloat( jQuery.css( this[0], type, "padding" ) ) : |
| null; |
| }; |
| |
| // outerHeight and outerWidth |
| jQuery.fn["outer" + name] = function( margin ) { |
| return this[0] ? |
| parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : |
| null; |
| }; |
| |
| jQuery.fn[ type ] = function( size ) { |
| // Get window width or height |
| var elem = this[0]; |
| 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 ]() ) ); |
| }); |
| } |
| |
| if ( jQuery.isWindow( elem ) ) { |
| // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode |
| // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat |
| var docElemProp = elem.document.documentElement[ "client" + name ]; |
| return elem.document.compatMode === "CSS1Compat" && docElemProp || |
| elem.document.body[ "client" + name ] || docElemProp; |
| |
| // Get document width or height |
| } else if ( elem.nodeType === 9 ) { |
| // Either scroll[Width/Height] or offset[Width/Height], whichever is greater |
| return Math.max( |
| elem.documentElement["client" + name], |
| elem.body["scroll" + name], elem.documentElement["scroll" + name], |
| elem.body["offset" + name], elem.documentElement["offset" + name] |
| ); |
| |
| // Get or set width or height on the element |
| } else if ( size === undefined ) { |
| var orig = jQuery.css( elem, type ), |
| ret = parseFloat( orig ); |
| |
| return jQuery.isNaN( ret ) ? orig : ret; |
| |
| // Set the width or height on the element (default to pixels if value is unitless) |
| } else { |
| return this.css( type, typeof size === "string" ? size : size + "px" ); |
| } |
| }; |
| |
| }); |
| |
| })( jQuery ); |