Използвани библиотеки: jquery-ui-1.9.1
и jquery-1.8.2
Имам една джаджа с някаква функция, извикана от destroy
$.widget("my.customwidget", {
options: {
},
_destroy: function () {
var self = this;
this._super();
//some usefull functionality
},
//some other declarations
});
Ако моята джаджа е деактивирана, поради код в jquery-ui, методът за унищожаване не се извиква (код от jquery-ui):
function handlerProxy() {
// allow widgets to customize the disabled handling
// - disabled as an array instead of boolean
// - disabled class as method for disabling individual parts
if ( instance.options.disabled === true || $( this ).hasClass( "ui-state-disabled" ) ) {
return;
}
return ( typeof handler === "string" ? instance[ handler ] : handler )
.apply( instance, arguments );
}
това handleProxy
е вътре във функцията _on
. CallStack изглежда така: Когато елементът с моята джаджа бъде премахнат, се извиква $.cleanData
. След това cleanData
извиква $( elem ).triggerHandler( "remove" )
и задейства извиквания _on
за събитие remove
. След това премахнете обажданията $.widget.destroy
Как мога да направя повикване за функция за унищожаване дори на деактивирана джаджа?
АКТУАЛИЗАЦИЯ: Създаден jsFiddle за демонстрация http://jsfiddle.net/9yygj1wm/
АКТУАЛИЗАЦИЯ: Това е коригирано в jquery-ui-1.9.2
, но как може да бъде коригирано без надграждане на библиотека?