gpt4 book ai didi

javascript - 如何在禁用的 jquery 小部件上调用 destroy ?

转载 作者:行者123 更新时间:2023-12-01 05:39:57 25 4
gpt4 key购买 nike

使用的库:jquery-ui-1.9.1jquery-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") 并为 remove 事件触发调用 _on 。比删除调用 $.widget.destroy

即使在禁用的小部件上,如何调用销毁函数?

更新:创建了 jsFiddle 进行演示 http://jsfiddle.net/9yygj1wm/

更新:此问题已在 jquery-ui-1.9.2 中修复,但如何在不升级库的情况下修复它?

最佳答案

嗨,我不知道深度流程,但根据我的蛮力,我发现这可以解决问题

$("#destroyWidget").click(function () {
$("a").simpleWidget("enable");
$("a").remove();

});

暂时用这个,专家会解释:)

关于javascript - 如何在禁用的 jquery 小部件上调用 destroy ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com