]> source.dussan.org Git - jquery.git/commitdiff
Bug 7931; Fixed bug that caused scrollTop and scrollLeft setters to return null when...
authorXavi <xavi.rmz@gmail.com>
Mon, 10 Jan 2011 00:11:05 +0000 (19:11 -0500)
committerXavi <xavi.rmz@gmail.com>
Mon, 10 Jan 2011 00:11:05 +0000 (19:11 -0500)
src/offset.js
test/unit/offset.js

index 2040c9d83ac9d5db4f15159cc980fbab5c2506fd..d53a8813b961de96eb72f0020250bb9a877e0b19 100644 (file)
@@ -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 ];
        };
 });
 
index cfa14449b7359ccaf53a55abd36926c6e04b2dc6..66676def530a671fa74d5bf4c35007d2d414d72d 100644 (file)
@@ -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 ) {