]> source.dussan.org Git - jquery.git/commitdiff
Dimensions: allow modification of coordinates argument
authorOleg Gaidarenko <markelog@gmail.com>
Tue, 11 Nov 2014 13:27:44 +0000 (16:27 +0300)
committerOleg Gaidarenko <markelog@gmail.com>
Sun, 16 Nov 2014 15:06:39 +0000 (18:06 +0300)
Ref f7e60dc83d81cbf892de9dab39642dd67c49bd23

src/offset.js
test/unit/dimensions.js

index 0200dd64e75488d4869049ca2ef871bce784178c..eb3c1f1197d11149c94425ba609a088e7535ec58 100644 (file)
@@ -57,7 +57,9 @@ jQuery.offset = {
                }
 
                if ( jQuery.isFunction( options ) ) {
-                       options = options.call( elem, i, curOffset );
+
+                       // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+                       options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
                }
 
                if ( options.top != null ) {
index 97e23d7e20170ab1b6978c86f2af7ca3bca935b9..a5c650afa201fc27b25f3ec382aff1834a25421f 100644 (file)
@@ -470,4 +470,16 @@ testIframe( "dimensions/documentLarge", "window vs. large document", function( j
        ok( jQuery( document ).width() > jQuery( window ).width(), "document width is larger than window width" );
 });
 
+test( "allow modification of coordinates argument (gh-1848)", 1, function() {
+       var element = jQuery( "<div/>" ).appendTo( "#qunit-fixture" );
+
+       element.offset(function( index, coords ) {
+               coords.top = 100;
+
+               return coords;
+       });
+
+       equal( element.offset().top, 100, "coordinates are modified" );
+});
+
 })();