]> source.dussan.org Git - jquery.git/commitdiff
Call extend on prop to avoid changing original properties so that per-property easing...
authortimmywil <tim.willison@thisismedium.com>
Sun, 8 May 2011 01:26:02 +0000 (21:26 -0400)
committertimmywil <tim.willison@thisismedium.com>
Sun, 8 May 2011 01:26:02 +0000 (21:26 -0400)
src/effects.js
test/unit/effects.js

index 801f3f1011819c54e891b65cd41cc8ddb7bfaa8d..88661e0e93c1eb93ab0859251de07ce66a0dc6be 100644 (file)
@@ -126,6 +126,9 @@ jQuery.fn.extend({
                        return this.each( optall.complete, [ false ] );
                }
 
+               // Do not change referenced properties as per-property easing will be lost
+               prop = jQuery.extend( {}, prop );
+
                return this[ optall.queue === false ? "each" : "queue" ](function() {
                        // XXX 'this' does not always have a nodeName when running the
                        // test suite
@@ -158,7 +161,7 @@ jQuery.fn.extend({
                                // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
                                if ( jQuery.isArray( val ) ) {
                                        opt.animatedProperties[ name ] = val[ 1 ];
-                                       val = val[ 0 ];
+                                       val = prop[ name ] = val[ 0 ];
                                } else {
                                        opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
                                }
index 56798c3f848cb0a60e7347c5a01702f99e28a6ea..ea7f4e7275b2bb3d1c167d01498e8b90452f3306 100644 (file)
@@ -923,13 +923,18 @@ test("jQuery.show('fast') doesn't clear radio buttons (bug #1095)", function ()
 
 test("animate with per-property easing", function(){
 
-       expect(3);
+       expect(5);
        stop();
 
        var data = { a:0, b:0, c:0 },
                _test1_called = false,
                _test2_called = false,
-               _default_test_called = false;
+               _default_test_called = false,
+               props = {
+                       a: [ 100, "_test1" ],
+                       b: [ 100, "_test2" ],
+                       c: 100
+               };
 
        jQuery.easing["_test1"] = function(p) {
                _test1_called = true;
@@ -946,16 +951,14 @@ test("animate with per-property easing", function(){
                return p;
        };
 
-       jQuery(data).animate({
-               a: [100, "_test1"],
-               b: [100, "_test2"],
-               c: 100
-       }, 400, "_default_test", function(){
+       jQuery(data).animate( props, 400, "_default_test", function(){
                start();
 
                ok( _test1_called, "Easing function (_test1) called" );
                ok( _test2_called, "Easing function (_test2) called" );
                ok( _default_test_called, "Easing function (_default) called" );
+               equal( props.a[ 1 ], "_test1", "animate does not change original props (per-property easing would be lost)");
+               equal( props.b[ 1 ], "_test2", "animate does not change original props (per-property easing would be lost)");
        });
 
 });