- return this["inner" + name]() +
- num(this, "border" + tl + "Width") +
- num(this, "border" + br + "Width") +
- (options.margin ?
- num(this, "margin" + tl) + num(this, "margin" + br) :
- 0);
- };
+ if (elem) {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ parentOffset = offsetParent.offset();
+
+ // Subtract element margins
+ offset.top -= parseInt( jQuery.curCSS(elem, 'marginTop', true) ) || 0;
+ offset.left -= parseInt( jQuery.curCSS(elem, 'marginLeft', true) ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseInt( jQuery.curCSS(offsetParent[0], 'borderTopWidth', true) ) || 0;
+ parentOffset.left += parseInt( jQuery.curCSS(offsetParent[0], 'borderLeftWidth', true) ) || 0;
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },