fixed offset(coordinates) returns null when no matching elements in jQuery object...
authorKarl Swedberg <karl@englishrules.com>
Thu, 21 Jan 2010 15:18:54 +0000 (23:18 +0800)
committerJohn Resig <jeresig@gmail.com>
Sat, 23 Jan 2010 17:26:35 +0000 (01:26 +0800)
src/offset.js
test/unit/effects.js
test/unit/offset.js

index c318374..f80574e 100644 (file)
@@ -2,16 +2,16 @@ if ( "getBoundingClientRect" in document.documentElement ) {
        jQuery.fn.offset = function( options ) {
                var elem = this[0];
 
-               if ( !elem || !elem.ownerDocument ) {
-                       return null;
-               }
-
                if ( options ) { 
                        return this.each(function( i ) {
                                jQuery.offset.setOffset( this, options, i );
                        });
                }
 
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
                if ( elem === elem.ownerDocument.body ) {
                        return jQuery.offset.bodyOffset( elem );
                }
@@ -28,16 +28,16 @@ if ( "getBoundingClientRect" in document.documentElement ) {
        jQuery.fn.offset = function( options ) {
                var elem = this[0];
 
-               if ( !elem || !elem.ownerDocument ) {
-                       return null;
-               }
-
                if ( options ) { 
                        return this.each(function( i ) {
                                jQuery.offset.setOffset( this, options, i );
                        });
                }
 
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
                if ( elem === elem.ownerDocument.body ) {
                        return jQuery.offset.bodyOffset( elem );
                }
index e44739b..467631c 100644 (file)
@@ -29,9 +29,8 @@ test("show()", function() {
        div.hide().show(speed, function() {
                        pass = false;
                });
-               ok( pass, "Show with " + name + " does not call animate callback");
+               ok( pass, "Show with " + name + " does not call animate callback" );
        });
-       
 
        jQuery("#main").append('<div id="show-tests"><div><p><a href="#"></a></p><code></code><pre></pre><span></span></div><table><thead><tr><th></th></tr></thead><tbody><tr><td></td></tr></tbody></table><ul><li></li></ul></div>');
 
index dc03bc2..dbaddc8 100644 (file)
@@ -305,6 +305,13 @@ testoffset("body", function( jQuery ) {
        equals( jQuery('body').offset().left, 1, "jQuery('#body').offset().left" );
 });
 
+test("Chaining offset(coords) returns jQuery object", function() {
+  expect(2);
+  var coords = { top:  1, left:  1 };
+       equals( jQuery("#absolute-1").offset(coords).selector, "#absolute-1", "offset(coords) returns jQuery object" );
+       equals( jQuery("#non-existent").offset(coords).selector, "#non-existent", "offset(coords) with empty jQuery set returns jQuery object" );
+});
+
 test("offsetParent", function(){
        expect(11);