二手图书馆: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
中修复,但如何在不升级库的情况下修复它?
答案 0 :(得分:0)
嗨,我不知道深入流动,但根据我的蛮力,我发现这是解决问题
$("#destroyWidget").click(function () {
$("a").simpleWidget("enable");
$("a").remove();
});
暂时使用这个,专家会解释:)