Permalink
Browse files

Offset: return zeros for disconnected/hidden elements

Fixes gh-2310
Close gh-2396
  • Loading branch information...
timmywil committed Jun 15, 2015
1 parent 578dcee commit 40dcc767640c41a4387a343f1ef53ac57ed631c5
Showing with 12 additions and 15 deletions.
  1. +4 −1 src/offset.js
  2. +8 −14 test/unit/offset.js
View
@@ -32,7 +32,7 @@ jQuery.offset = {
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" ) &&
@@ -103,6 +103,9 @@ jQuery.fn.extend({
left: rect.left + win.pageXOffset - docElem.clientLeft
};
}
// Return zeros for disconnected and hidden elements (gh-2310)
return rect;
},
position: function() {
View
@@ -48,30 +48,24 @@ test("empty set", 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) {

0 comments on commit 40dcc76

Please sign in to comment.