diff --git a/src/offset.js b/src/offset.js index 972278c8..a0cd7a15 100644 --- a/src/offset.js +++ b/src/offset.js @@ -37,8 +37,8 @@ if ( "getBoundingClientRect" in document.documentElement ) { win = getWindow(doc), clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, - scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ), - scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft), + scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, + scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, top = box.top + scrollTop - clientTop, left = box.left + scrollLeft - clientLeft; @@ -180,7 +180,7 @@ jQuery.offset = { curOffset = curElem.offset(), curCSSTop = jQuery.css( elem, "top" ), curCSSLeft = jQuery.css( elem, "left" ), - calculatePosition = ((position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1), + calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1, props = {}, curPosition = {}, curTop, curLeft; // need to be able to calculate position if either top or left is auto and position is either absolute or fixed diff --git a/test/data/offset/bug_8316.html b/test/data/offset/bug_8316.html deleted file mode 100644 index ce32a282..00000000 --- a/test/data/offset/bug_8316.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - bug_8316 - - - - - - - - - - - - - -

Some foo text

-
- - diff --git a/test/data/offset/fixed.html b/test/data/offset/fixed.html index 3181718d..81ba4ca7 100644 --- a/test/data/offset/fixed.html +++ b/test/data/offset/fixed.html @@ -35,6 +35,7 @@
+

Click the white box to move the marker to it.

diff --git a/test/unit/offset.js b/test/unit/offset.js index b7f72a0c..ae051884 100644 --- a/test/unit/offset.js +++ b/test/unit/offset.js @@ -265,7 +265,7 @@ testoffset("static", function( jQuery ) { }); testoffset("fixed", function( jQuery ) { - expect(28); + expect(30); jQuery.offset.initialize(); @@ -320,6 +320,17 @@ testoffset("fixed", function( jQuery ) { ok( true, 'Fixed position is not supported' ); } }); + + // Bug 8316 + var $noTopLeft = jQuery('#fixed-no-top-left'); + if ( jQuery.offset.supportsFixedPosition ) { + equals( $noTopLeft.offset().top, 1007, "Check offset top for fixed element with no top set" ); + equals( $noTopLeft.offset().left, 1007, "Check offset left for fixed element with no left set" ); + } else { + // need to have same number of assertions + ok( true, 'Fixed position is not supported' ); + ok( true, 'Fixed position is not supported' ); + } }); testoffset("table", function( jQuery ) { @@ -422,22 +433,7 @@ test("offsetParent", function(){ equals( div[1], jQuery("#nothiddendiv")[0], "The div is the offsetParent." ); }); -testoffset("bug_8316", function( jQuery ){ - expect(2); - - var tests = [ - { id:'#elem', top: 100, left: 100 } - ]; - - jQuery.each(tests, function(){ - var el = jQuery(this.id); - el.offset({ top: this.top, left: this.left}); - equals(Math.round(el.offset().top), this.top); - equals(Math.round(el.offset().left), this.left); - }); -}); - -function testoffset(name, fn) { +function testoffset( name, fn ) { test(name, function() { // pause execution for now