]> 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:05:29 +0000 (18:05 +0300)
Fixes gh-1848
Closes gh-1853

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

index aee95efde48d4b410954f2f45353deee70cdbce8..69e571f7fcb204254f5872dac2fce8e01513a92b 100644 (file)
@@ -51,7 +51,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 8d51c6cde7132522b9aa8b0dfec4015524684612..7d37e13bc84c1f56484c61cb76bd754afc31c126 100644 (file)
@@ -455,4 +455,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" );
+});
+
 })();