I just pulled a new copy of jQuery UI 1.8.16. The destroy fn for the dialog widget looks like this:
destroy: function() {
var self = this;
if (self.overlay) {
self.overlay.destroy();
}
self.uiDialog.hide();
self.element
.unbind('.dialog')
.removeData('dialog')
.removeClass('ui-dialog-content ui-widget-content')
.hide().appendTo('body');
self.uiDialog.remove();
if (self.originalTitle) {
self.element.attr('title', self.originalTitle);
}
return self;
}
Trunk looks like this:
_destroy: function() {
var self = this;
if ( self.overlay ) {
self.overlay.destroy();
}
self.uiDialog.hide();
self.element
.removeClass( "ui-dialog-content ui-widget-content" )
.hide()
.appendTo( "body" );
self.uiDialog.remove();
if ( self.originalTitle ) {
self.element.attr( "title", self.originalTitle );
}
}
The main difference is the fn name, and that the event/data unbinding was moved elsewhere in a more generic form. The changes were made in early 2011, but they haven't made it into the 1-8-stable branch. The hard-coded widget name causes problems for widgets subclassed from the dialog. Is there a reason these changes haven't been released yet?