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.

This commit is contained in:
Scott González
2010-10-04 14:52:06 -04:00
parent c3145b691b
commit 3b38025ced

View File

@@ -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,