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



常用库: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中的代码销毁方法没有被调用(来自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

我怎么能调用销毁函数,即使在禁用的小部件?

UPDATE:创建jsFiddle用于演示http://jsfiddle.net/9yygj1wm/

UPDATE:这在jquery-ui-1.9.2中已修复,但如何在不升级库的情况下修复?

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

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

暂时使用,专家会解释的

相关内容

  • 没有找到相关文章

最新更新