elem.style.position = "relative";
}
- curOffset = curElem.offset() || { top: 0, left: 0 };
+ curOffset = curElem.offset();
curCSSTop = jQuery.css( elem, "top" );
curCSSLeft = jQuery.css( elem, "left" );
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
left: rect.left + win.pageXOffset - docElem.clientLeft
};
}
+
+ // Return zeros for disconnected and hidden elements (gh-2310)
+ return rect;
},
position: function() {
});
test("disconnected element", function() {
- expect(1);
-
- var result;
+ expect( 2 );
- try {
- result = jQuery( document.createElement("div") ).offset();
- } catch ( e ) {}
+ var result = jQuery( document.createElement( "div" ) ).offset();
- ok( !result, "no position for disconnected element" );
+ equal( result.top, 0, "Retrieving offset on disconnected elements returns zeros (gh-2310)" );
+ equal( result.left, 0, "Retrieving offset on disconnected elements returns zeros (gh-2310)" );
});
test("hidden (display: none) element", function() {
- expect(1);
-
- var result,
- node = jQuery("<div style='display: none' />").appendTo("#qunit-fixture");
+ expect( 2 );
- try {
+ var node = jQuery("<div style='display: none' />").appendTo("#qunit-fixture"),
result = node.offset();
- } catch ( e ) {}
node.remove();
- ok( !result, "no position for hidden (display: none) element" );
+ equal( result.top, 0, "Retrieving offset on hidden elements returns zeros (gh-2310)" );
+ equal( result.left, 0, "Retrieving offset on hidden elements returns zeros (gh-2310)" );
});
testIframe("offset/absolute", "absolute", function($, iframe) {