diff --git a/src/effects.js b/src/effects.js index 993ebb804..d90a1b28e 100644 --- a/src/effects.js +++ b/src/effects.js @@ -286,7 +286,10 @@ function Animation( elem, properties, options ) { animation = deferred.promise({ elem: elem, props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { specialEasing: {} }, options ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), diff --git a/src/effects/Tween.js b/src/effects/Tween.js index 40a02659e..810d11133 100644 --- a/src/effects/Tween.js +++ b/src/effects/Tween.js @@ -13,7 +13,7 @@ Tween.prototype = { init: function( elem, options, prop, end, easing, unit ) { this.elem = elem; this.prop = prop; - this.easing = easing || "swing"; + this.easing = easing || jQuery.easing._default; this.options = options; this.start = this.now = this.cur(); this.end = end; @@ -105,7 +105,8 @@ jQuery.easing = { }, swing: function( p ) { return 0.5 - Math.cos( p * Math.PI ) / 2; - } + }, + _default: "swing" }; jQuery.fx = Tween.prototype.init; diff --git a/test/unit/effects.js b/test/unit/effects.js index bb5b0ce7d..27c145974 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -1191,45 +1191,45 @@ test("animate with per-property easing", function(){ test("animate with CSS shorthand properties", function(){ expect(11); - var _default_count = 0, - _special_count = 0, + var easeAnimation_count = 0, + easeProperty_count = 0, propsBasic = { "padding": "10 20 30" }, - propsSpecial = { "padding": [ "1 2 3", "_special" ] }; + propsSpecial = { "padding": [ "1 2 3", "propertyScope" ] }; - jQuery.easing._default = function(p) { + jQuery.easing.animationScope = function(p) { if ( p >= 1 ) { - _default_count++; + easeAnimation_count++; } return p; }; - jQuery.easing._special = function(p) { + jQuery.easing.propertyScope = function(p) { if ( p >= 1 ) { - _special_count++; + easeProperty_count++; } return p; }; jQuery("#foo") - .animate( propsBasic, 200, "_default", function() { + .animate( propsBasic, 200, "animationScope", function() { equal( this.style.paddingTop, "10px", "padding-top was animated" ); equal( this.style.paddingLeft, "20px", "padding-left was animated" ); equal( this.style.paddingRight, "20px", "padding-right was animated" ); equal( this.style.paddingBottom, "30px", "padding-bottom was animated" ); - equal( _default_count, 4, "per-animation default easing called for each property" ); - _default_count = 0; + equal( easeAnimation_count, 4, "per-animation default easing called for each property" ); + easeAnimation_count = 0; }) - .animate( propsSpecial, 200, "_default", function() { + .animate( propsSpecial, 200, "animationScope", function() { equal( this.style.paddingTop, "1px", "padding-top was animated again" ); equal( this.style.paddingLeft, "2px", "padding-left was animated again" ); equal( this.style.paddingRight, "2px", "padding-right was animated again" ); equal( this.style.paddingBottom, "3px", "padding-bottom was animated again" ); - equal( _default_count, 0, "per-animation default easing not called" ); - equal( _special_count, 4, "special easing called for each property" ); + equal( easeAnimation_count, 0, "per-animation default easing not called" ); + equal( easeProperty_count, 4, "special easing called for each property" ); jQuery(this).css("padding", "0"); - delete jQuery.easing._default; - delete jQuery.easing._special; + delete jQuery.easing.animationScope; + delete jQuery.easing.propertyScope; }); this.clock.tick( 400 ); }); @@ -2227,5 +2227,25 @@ test( "Animation should go to its end state if document.hidden = true", 1, funct } }); +test( "jQuery.easing._default (#2218)", 2, function() { + jQuery( "#foo" ) + .animate({ width: "5px" }, { + duration: 5, + start: function( anim ) { + equal( anim.opts.easing, jQuery.easing._default, + "anim.opts.easing should be equal to jQuery.easing._default when the easing argument is not given" ); + } + }) + .animate({ height: "5px" }, { + duration: 5, + easing: "linear", + start: function( anim ) { + equal( anim.opts.easing, "linear", + "anim.opts.easing should be equal to the easing argument" ); + } + }) + .stop(); + this.clock.tick( 25 ); +}); })();