我已经开始使用 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 {}
有什么想法吗?