0

我已经开始使用 Widget Factory 来创建插件。但是我似乎找不到从内部销毁插件的方法。

到目前为止,在我发现的所有示例和教程中,它们都从 DOM 中破坏了插件。这一切都很好,但我也希望能够从我的原型中销毁插件。

例如,使用不正确的参数或不正确的元素调用插件,或者在一段时间后它不验证。我希望能够在之后调用 this.destroy() 并销毁插件。当我调用 this.destroy() 时,它确实调用了 $.Widget.prototype.destroy() 和我随后的 _destroy() 方法,但实例仍在 DOM 元素上。只有在调用 $(el).pluginName('destroy') 时,它才会真正被销毁。

快速示例在这里

假设我们有一些 html

<p>Lorem ipsum</p>

以及我们的 jQuery UI 小部件,它旨在在创建后立即销毁它

$.widget('ns.test', {
    _create: function() {
        this.destroy();
    },

    _destroy: function() {}
});

我们调用插件所以

$('p').test();

我希望实例不会在 $('p') 上设置,但它是

$('p').data();
>> Object {ns-test: $.widget.$.(anonymous function).(anonymous function)}

仅当从 DOM 调用该方法时,它才会被销毁

$('p').test('destroy');
>> Object {}

有什么想法吗?

4

1 回答 1

0

+blgt 洞察力或多或少是正确的。所以我添加它并接受它。

您可以从andthis.destroy()以外的任何方法调用它,它会按您的预期工作,但我不完全确定为什么。可能与数据的管理方式有关_create_init.data

于 2016-04-06T20:17:13.923 回答