私はjQueryプラグインアーキテクチャが大好きですが、後でコードのプロパティやメソッドにアクセスするためにプラグインインスタンスへの参照を保持したい場合、(おそらく私の側の理解が不足しているために)イライラします。
編集:私が実際にやろうとしているのは、プラグイン内で使用されるメソッドとプロパティへの参照を保持することであり、後でそれらを使用できるようにすることです。
AJAX読み込みアイコンの場合を考えてみましょう。より伝統的なOOP環境では、次のことができます。
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
オブジェクトのメソッドとプロパティは、後で使用できるように変数に保存されます。jQueryプラグインで同じ機能を使用したい場合は、メインコードから次のように呼び出します。
$("#myId").ajaxIcon()
慣例により、プラグインはプラグインに渡された元のjQueryオブジェクトを返す必要があります。これにより、連鎖性が可能になりますが、そうすると、プラグインインスタンスのメソッドとプロパティにアクセスできなくなります。
これで、プラグインでパブリック関数を宣言できることがわかりました。
$.fn.ajaxIcon = function(options) {
return this.each(function () {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
ただし、元のjQueryオブジェクトを返すという規則に違反しない限り、参照したいプラグインの特定のインスタンスへの参照を保持することはできません。
私はこのようなことをしたいと思っています:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
何かご意見は?