diff --git a/src/offset.js b/src/offset.js index 2040c9d8..d53a8813 100644 --- a/src/offset.js +++ b/src/offset.js @@ -261,13 +261,9 @@ jQuery.each( ["Left", "Top"], function( i, name ) { var method = "scroll" + name; jQuery.fn[ method ] = function(val) { - var elem = this[0], win; + var elem, win; - if ( !elem ) { - return null; - } - - if ( val !== undefined ) { + if ( val != undefined ) { // Set the scroll offset return this.each(function() { win = getWindow( this ); @@ -282,15 +278,19 @@ jQuery.each( ["Left", "Top"], function( i, name ) { this[ method ] = val; } }); - } else { - win = getWindow( elem ); - - // Return the scroll offset - return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : - jQuery.support.boxModel && win.document.documentElement[ method ] || - win.document.body[ method ] : - elem[ method ]; } + + elem = this[0]; + if( !elem ) { + return null + } + + win = getWindow( elem ); + // Return the scroll offset + return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : + jQuery.support.boxModel && win.document.documentElement[ method ] || + win.document.body[ method ] : + elem[ method ]; }; }); diff --git a/test/unit/offset.js b/test/unit/offset.js index cfa14449..66676def 100644 --- a/test/unit/offset.js +++ b/test/unit/offset.js @@ -333,7 +333,7 @@ testoffset("table", function( jQuery ) { }); testoffset("scroll", function( jQuery, win ) { - expect(16); + expect(20); var ie = jQuery.browser.msie && parseInt( jQuery.browser.version, 10 ) < 8; @@ -379,6 +379,12 @@ testoffset("scroll", function( jQuery, win ) { equals( jQuery(window).scrollLeft(), 0, "jQuery(window).scrollLeft() other window" ); equals( jQuery(document).scrollTop(), 0, "jQuery(window).scrollTop() other document" ); equals( jQuery(document).scrollLeft(), 0, "jQuery(window).scrollLeft() other document" ); + + // Tests scrollTop/Left with empty jquery objects + ok( jQuery().scrollTop(100) != null, "jQuery().scrollTop(100) testing setter on empty jquery object" ); + ok( jQuery().scrollLeft(100) != null, "jQuery().scrollLeft(100) testing setter on empty jquery object" ); + ok( jQuery().scrollTop() === null, "jQuery().scrollTop(100) testing setter on empty jquery object" ); + ok( jQuery().scrollLeft() === null, "jQuery().scrollLeft(100) testing setter on empty jquery object" ); }); testoffset("body", function( jQuery ) {