diff options
-rw-r--r-- | demos/tooltip/custom-animation.html | 11 | ||||
-rw-r--r-- | ui/jquery.ui.tooltip.js | 4 | ||||
-rw-r--r-- | ui/jquery.ui.widget.js | 20 |
3 files changed, 26 insertions, 9 deletions
diff --git a/demos/tooltip/custom-animation.html b/demos/tooltip/custom-animation.html index a9745a062..d32bba0d2 100644 --- a/demos/tooltip/custom-animation.html +++ b/demos/tooltip/custom-animation.html @@ -11,15 +11,12 @@ <link type="text/css" href="../demos.css" rel="stylesheet" /> <script type="text/javascript"> $(function() { - // TODO overhaul this with custom animation API $(".demo").tooltip({ - open: function() { - $(".ui-tooltip").stop(false, true).hide().slideDown(); + show: { + effect: "slideDown" }, - close: function() { - $(".ui-tooltip").stop(false, false).show().slideUp(function() { - $(this).remove(); - }); + hide: { + effect: "slideUp" } }); }); diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js index 534b3c947..bff17d7b5 100644 --- a/ui/jquery.ui.tooltip.js +++ b/ui/jquery.ui.tooltip.js @@ -91,7 +91,7 @@ $.widget("ui.tooltip", { }, this.options.position ) ).hide(); - tooltip.fadeIn(); + this._show( tooltip, this.options.show ); this._trigger( "open", event ); @@ -111,7 +111,7 @@ $.widget("ui.tooltip", { var tooltip = this._find( target ); target.removeAttr( "aria-describedby" ); - tooltip.fadeOut( function() { + this._hide( tooltip, this.options.hide, function() { $( this ).remove(); }); diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index 27d08ccd2..9593c1eaf 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -353,6 +353,26 @@ $.Widget.prototype = { } }; +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + options = options || {}; + var hasOptions = !$.isEmptyObject( options ), + effectName = options.effect || defaultEffect; + options.complete = callback; + + if ( hasOptions && $.effects && $.effects[ effectName ] ) { + element[ method ]( options ); + } else if ( element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + } + }; +}); + // DEPRECATED if ( $.uiBackCompat !== false ) { $.Widget.prototype._getCreateOptions = function() { |