jQuery.each(["Height", "Width"] , function (i, name){ var type = name.toLowerCase(); jQuery.fn["inner" + name] = function (){ return this[0]? jQuery.css(this[0], type, false , "padding"): null ; } ; jQuery.fn["outer" + name] = function (margin){ return this[0]? jQuery.css(this[0], type, false , margin? "margin": "border"): null ; } ; jQuery.fn[type] = function (size){ 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]())); } ); } return ("scrollTo" in elem && elem.document)? elem.document.compatMode === "CSS1Compat" && elem.document.documentElement["client" + name] || elem.document.body["client" + name]: (elem.nodeType === 9)? Math.max(elem.documentElement["client" + name], elem.body["scroll" + name], elem.documentElement["scroll" + name], elem.body["offset" + name], elem.documentElement["offset" + name]): size === undefined? jQuery.css(elem, type): this.css(type, typeof size === "string"? size: size + "px"); } ; } );