プラグインを作成するために 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 {}
誰か考えはありますか?