aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/offset.js7
-rw-r--r--test/unit/offset.js5
2 files changed, 8 insertions, 4 deletions
diff --git a/src/offset.js b/src/offset.js
index ca27ca5c7..65dab2bd2 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -121,12 +121,13 @@ jQuery.fn.extend( {
doc = elem.ownerDocument;
offsetParent = elem.offsetParent || doc.documentElement;
while ( offsetParent &&
- ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
+ offsetParent !== doc.documentElement &&
jQuery.css( offsetParent, "position" ) === "static" ) {
- offsetParent = offsetParent.parentNode;
+ offsetParent = offsetParent.offsetParent || doc.documentElement;
}
- if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
+ if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 &&
+ jQuery.css( offsetParent, "position" ) !== "static" ) {
// Incorporate borders into its offset, since they are outside its content origin
parentOffset = jQuery( offsetParent ).offset();
diff --git a/test/unit/offset.js b/test/unit/offset.js
index 73ec8928f..50eee3dd5 100644
--- a/test/unit/offset.js
+++ b/test/unit/offset.js
@@ -436,13 +436,16 @@ testIframe( "fixed", "offset/fixed.html", function( assert, $, window ) {
} );
testIframe( "table", "offset/table.html", function( assert, $ ) {
- assert.expect( 4 );
+ assert.expect( 6 );
assert.equal( $( "#table-1" ).offset().top, 6, "jQuery('#table-1').offset().top" );
assert.equal( $( "#table-1" ).offset().left, 6, "jQuery('#table-1').offset().left" );
assert.equal( $( "#th-1" ).offset().top, 10, "jQuery('#th-1').offset().top" );
assert.equal( $( "#th-1" ).offset().left, 10, "jQuery('#th-1').offset().left" );
+
+ assert.equal( $( "#th-1" ).position().top, 10, "jQuery('#th-1').position().top" );
+ assert.equal( $( "#th-1" ).position().left, 10, "jQuery('#th-1').position().left" );
} );
testIframe( "scroll", "offset/scroll.html", function( assert, $, win ) {