Skip to content
Permalink
Browse files

return null when no matched elements exist for offset and position

  • Loading branch information
brandonaaron committed Mar 17, 2009
1 parent 36b4a9b commit a37cccc8827619cfbd76e229af9de2529041ee5b
Showing with 29 additions and 29 deletions.
  1. +29 −29 src/offset.js
@@ -1,7 +1,7 @@
if ( "getBoundingClientRect" in document.documentElement )
jQuery.fn.offset = function() {
var elem = this[0];
if ( !elem ) return { top: 0, left: 0 };
if ( !elem ) return null;
if ( elem === elem.ownerDocument.body ) return jQuery.offset.bodyOffset( elem );
var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
@@ -12,7 +12,7 @@ if ( "getBoundingClientRect" in document.documentElement )
else
jQuery.fn.offset = function() {
var elem = this[0];
if ( !elem ) return { top: 0, left: 0 };
if ( !elem ) return null;
if ( elem === elem.ownerDocument.body ) return jQuery.offset.bodyOffset( elem );
jQuery.offset.initialized || jQuery.offset.initialize();

@@ -88,32 +88,32 @@ jQuery.offset = {

jQuery.fn.extend({
position: function() {
var left = 0, top = 0, results;

if ( this[0] ) {
// Get *real* offsetParent
var offsetParent = this.offsetParent(),

// Get correct offsets
offset = this.offset(),
parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();

// Subtract element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
// are the same in Safari causing offset.left to incorrectly be 0
offset.top -= num( this, 'marginTop' );
offset.left -= num( this, 'marginLeft' );

// Add offsetParent borders
parentOffset.top += num( offsetParent, 'borderTopWidth' );
parentOffset.left += num( offsetParent, 'borderLeftWidth' );

// Subtract the two offsets
results = {
top: offset.top - parentOffset.top,
left: offset.left - parentOffset.left
};
}
if ( !this[0] ) return null;

var left = 0, top = 0, results,

// Get *real* offsetParent
offsetParent = this.offsetParent(),

// Get correct offsets
offset = this.offset(),
parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();

// Subtract element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
// are the same in Safari causing offset.left to incorrectly be 0
offset.top -= num( this, 'marginTop' );
offset.left -= num( this, 'marginLeft' );

// Add offsetParent borders
parentOffset.top += num( offsetParent, 'borderTopWidth' );
parentOffset.left += num( offsetParent, 'borderLeftWidth' );

// Subtract the two offsets
results = {
top: offset.top - parentOffset.top,
left: offset.left - parentOffset.left
};

return results;
},
@@ -132,7 +132,7 @@ jQuery.each( ['Left', 'Top'], function(i, name) {
var method = 'scroll' + name;

jQuery.fn[ method ] = function(val) {
if (!this[0]) return null;
if ( !this[0] ) return null;

return val !== undefined ?

0 comments on commit a37cccc

Please sign in to comment.
You can’t perform that action at this time.