From 1f667aa035b3e4885d6b35fa9aa4990310f131af Mon Sep 17 00:00:00 2001 From: Karl Swedberg Date: Wed, 8 Sep 2010 16:31:32 -0400 Subject: [PATCH] Added full support for easing in all shorthand effects methods (hide, show, toggle, fadeTo, slideUp, etc.). Previously, these methods could only be used with two of the three (speed, easing, callback) arguments, or, in the case of fadeTo, 3 of the 4 (speed, opacity, easing, callback) arguments. Added three more sets of tests to the series of "Chain" tests. Fixes #7014 --- src/effects.js | 20 ++++++++++---------- test/index.html | 2 ++ test/unit/effects.js | 14 +++++++++++++- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/effects.js b/src/effects.js index 87d0f4d..9644194 100644 --- a/src/effects.js +++ b/src/effects.js @@ -14,9 +14,9 @@ var elemdisplay = {}, ]; jQuery.fn.extend({ - show: function( speed, callback ) { + show: function( speed, easing, callback ) { if ( speed || speed === 0) { - return this.animate( genFx("show", 3), speed, callback); + return this.animate( genFx("show", 3), speed, easing, callback); } else { for ( var i = 0, l = this.length; i < l; i++ ) { @@ -58,9 +58,9 @@ jQuery.fn.extend({ } }, - hide: function( speed, callback ) { + hide: function( speed, easing, callback ) { if ( speed || speed === 0 ) { - return this.animate( genFx("hide", 3), speed, callback); + return this.animate( genFx("hide", 3), speed, easing, callback); } else { for ( var i = 0, l = this.length; i < l; i++ ) { @@ -83,7 +83,7 @@ jQuery.fn.extend({ // Save the old toggle function _toggle: jQuery.fn.toggle, - toggle: function( fn, fn2 ) { + toggle: function( fn, fn2, callback ) { var bool = typeof fn === "boolean"; if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) { @@ -96,15 +96,15 @@ jQuery.fn.extend({ }); } else { - this.animate(genFx("toggle", 3), fn, fn2); + this.animate(genFx("toggle", 3), fn, fn2, callback); } return this; }, - fadeTo: function( speed, to, callback ) { + fadeTo: function( speed, to, easing, callback ) { return this.filter(":hidden").css("opacity", 0).show().end() - .animate({opacity: to}, speed, callback); + .animate({opacity: to}, speed, easing, callback); }, animate: function( prop, speed, easing, callback ) { @@ -241,8 +241,8 @@ jQuery.each({ fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" } }, function( name, props ) { - jQuery.fn[ name ] = function( speed, callback ) { - return this.animate( props, speed, callback ); + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); }; }); diff --git a/test/index.html b/test/index.html index be1f363..78060d4 100644 --- a/test/index.html +++ b/test/index.html @@ -245,6 +245,8 @@ Z
slideToggleIn
slideToggleIn
slideToggleOut
slideToggleOut
+ +
fadeTo
fadeTo
diff --git a/test/unit/effects.js b/test/unit/effects.js index 5ac4711..f82c4b1 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -562,6 +562,9 @@ test("Chain hide show", function() { test("Chain show hide", function() { jQuery('#hide div').saveState().show('fast').hide('fast',jQuery.checkState); }); +test("Chain show hide with easing and callback", function() { + jQuery('#hide div').saveState().show('fast').hide('fast','linear',jQuery.checkState); +}); test("Chain toggle in", function() { jQuery('#togglein div').saveState().toggle('fast').toggle('fast',jQuery.checkState); @@ -569,13 +572,18 @@ test("Chain toggle in", function() { test("Chain toggle out", function() { jQuery('#toggleout div').saveState().toggle('fast').toggle('fast',jQuery.checkState); }); - +test("Chain toggle out with easing and callback", function() { + jQuery('#toggleout div').saveState().toggle('fast').toggle('fast','linear',jQuery.checkState); +}); test("Chain slideDown slideUp", function() { jQuery('#slidedown div').saveState().slideDown('fast').slideUp('fast',jQuery.checkState); }); test("Chain slideUp slideDown", function() { jQuery('#slideup div').saveState().slideUp('fast').slideDown('fast',jQuery.checkState); }); +test("Chain slideUp slideDown with easing and callback", function() { + jQuery('#slideup div').saveState().slideUp('fast').slideDown('fast','linear',jQuery.checkState); +}); test("Chain slideToggle in", function() { jQuery('#slidetogglein div').saveState().slideToggle('fast').slideToggle('fast',jQuery.checkState); @@ -584,6 +592,10 @@ test("Chain slideToggle out", function() { jQuery('#slidetoggleout div').saveState().slideToggle('fast').slideToggle('fast',jQuery.checkState); }); +test("Chain fadeTo 0.5 1.0 with easing and callback)", function() { + jQuery('#fadeto div').saveState().fadeTo('fast',0.5).fadeTo('fast',1.0,'linear',jQuery.checkState); +}); + jQuery.makeTest = function( text ){ var elem = jQuery("
") .attr("id", "test" + jQuery.makeTest.id++) -- 1.7.10.4