Skip to content
Permalink
Browse files

Tooltip: Better cleanup on destroy. Fixes #8627 - The Tooltip destroy…

… method is not clearing up the data properties.
  • Loading branch information...
scottgonzalez committed Oct 5, 2012
1 parent 96f2aa4 commit 0a31a828319493d6642ce876555e5383106ce039
Showing with 27 additions and 4 deletions.
  1. +10 −3 tests/unit/tooltip/tooltip_methods.js
  2. +17 −1 ui/jquery.ui.tooltip.js
@@ -3,13 +3,20 @@
module( "tooltip: methods" );

test( "destroy", function() {
expect( 2 );
expect( 3 );
var element = $( "#tooltipped1" );

domEqual( "#tooltipped1", function() {
$( "#tooltipped1" ).tooltip().tooltip( "destroy" );
element.tooltip().tooltip( "destroy" );
});

// make sure that open tooltips are removed on destroy
$( "#tooltipped1" ).tooltip().tooltip( "open" ).tooltip( "destroy" );
domEqual( "#tooltipped1", function() {
element
.tooltip()
.tooltip( "open", $.Event( "mouseover", { target: element[0] }) )
.tooltip( "destroy" );
});
equal( $( ".ui-tooltip" ).length, 0 );
});

@@ -317,8 +317,24 @@ $.widget( "ui.tooltip", {
},

_destroy: function() {
$.each( this.tooltips, function( id ) {
var that = this;

// close open tooltips
$.each( this.tooltips, function( id, element ) {
// Delegate to close method to handle common cleanup
var event = $.Event( "blur" );
event.target = event.currentTarget = element[0];
that.close( event, true );

// Remove immediately; destroying an open tooltip doesn't use the
// hide animation
$( "#" + id ).remove();

// Restore the title
if ( element.data( "ui-tooltip-title" ) ) {
element.attr( "title", element.data( "ui-tooltip-title" ) );
element.removeData( "ui-tooltip-title" );
}
});
}
});

0 comments on commit 0a31a82

Please sign in to comment.
You can’t perform that action at this time.