diff --git a/src/effects.js b/src/effects.js index ff2f145b8..7fa734208 100644 --- a/src/effects.js +++ b/src/effects.js @@ -13,7 +13,7 @@ var elemdisplay = {}, jQuery.fn.extend({ show: function( speed, callback ) { - if ( speed != null ) { + if ( speed || speed === 0) { return this.animate( genFx("show", 3), speed, callback); } else { @@ -57,7 +57,7 @@ jQuery.fn.extend({ }, hide: function( speed, callback ) { - if ( speed != null ) { + if ( speed || speed === 0 ) { return this.animate( genFx("hide", 3), speed, callback); } else { diff --git a/src/offset.js b/src/offset.js index c3183743b..f80574eea 100644 --- a/src/offset.js +++ b/src/offset.js @@ -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 ); } diff --git a/test/unit/effects.js b/test/unit/effects.js index cefcc15a4..467631c7b 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -1,18 +1,36 @@ module("effects"); test("show()", function() { - expect(16); + expect(23); var pass = true, div = jQuery("#main div"); div.show().each(function(){ if ( this.style.display == "none" ) pass = false; }); ok( pass, "Show" ); - pass = true; - div.hide().show(null).each(function() { - if ( this.style.display == "none" ) pass = false; + var speeds = { + "null speed": null, + "undefined speed": undefined, + "empty string speed": "", + "false speed": false + }; + + jQuery.each(speeds, function(name, speed) { + pass = true; + div.hide().show(speed).each(function() { + if ( this.style.display == "none" ) pass = false; + }); + ok( pass, "Show with " + name); + }); + + + jQuery.each(speeds, function(name, speed) { + pass = true; + div.hide().show(speed, function() { + pass = false; + }); + ok( pass, "Show with " + name + " does not call animate callback" ); }); - ok( pass, "Show will null speed"); jQuery("#main").append('
'); diff --git a/test/unit/offset.js b/test/unit/offset.js index dc03bc2e2..dbaddc862 100644 --- a/test/unit/offset.js +++ b/test/unit/offset.js @@ -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);