Используемые библиотеки: 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 метод destroy не вызывается (код из 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
, но как это можно исправить без обновления библиотеки?