From 3b38025cedca458c100176c273c8d3956a7a5459 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 4 Oct 2010 14:52:06 -0400 Subject: [PATCH] Effects: Jump to final state and execute callbacks when $.fx.off is set to true. Fixes #6131 - Dialog breaks when $.fx.off. Partial fix for #5512 - jQuery.fx.off and effect on jQuery UI Effects. --- ui/jquery.effects.core.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ui/jquery.effects.core.js b/ui/jquery.effects.core.js index a835a062f..d052b3f86 100644 --- a/ui/jquery.effects.core.js +++ b/ui/jquery.effects.core.js @@ -456,15 +456,29 @@ function standardSpeed( speed ) { $.fn.extend({ effect: function(effect, options, speed, callback) { var args = _normalizeArguments.apply(this, arguments), - // TODO: make effects takes actual parameters instead of a hash + // TODO: make effects take actual parameters instead of a hash args2 = { options: args[1], duration: args[2], callback: args[3] }, + mode = args2.options.mode, effectMethod = $.effects[effect]; - return effectMethod && !$.fx.off ? effectMethod.call(this, args2) : this; + if ( $.fx.off || !effectMethod ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args2.duration, args2.callback ); + } else { + return this.each(function() { + if ( args2.callback ) { + args2.callback.call( this ); + } + }); + } + } + + return effectMethod.call(this, args2); }, _show: $.fn.show, -- 2.39.5