如何从其原型中销毁 jQuery UI 小部件
How to destroy a jQuery UI widgets from within it's prototype
我已经开始使用 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 {}
有什么想法吗?
+blgt 的见解或多或少是正确的。所以我添加它并接受它。
您可以从 _create
和 _init
以外的任何方法调用 this.destroy()
,它会按您预期的那样工作,但我不完全确定为什么。可能与 .data
数据的管理方式有关
我已经开始使用 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 {}
有什么想法吗?
+blgt 的见解或多或少是正确的。所以我添加它并接受它。
您可以从 _create
和 _init
以外的任何方法调用 this.destroy()
,它会按您预期的那样工作,但我不完全确定为什么。可能与 .data
数据的管理方式有关