2011-06-05 11 views
1

1つのオブジェクトから複数のjQuery用プラグインを作成するにはどうすればよいですか?単一オブジェクトからの複数のjQueryプラグイン

は当初、私が試した:

(function($) { 
    $.fn.myPlugin = { 
    plugin_1: function(options) { alert(this.text()); }, 
    plugin_2: function(options) { alert(this.text()); } 
    } 
})(jQuery); 

しかし、$('#element').myPlugin.plugin_1();を行うときに私が得た:this.text is not a function

+2

'this'は' $ .fn.myPlugin'を参照し、選択された要素は参照しません。 –

答えて

2

あなたがすることはできません、あなたはその方法で物事を名前空間にしようとするので、あなたが台無しの値をthisメソッド呼び出し内。 (具体的には、thisではなく、実際のjQueryオブジェクトよりも$.fn.myPluginを参照します。)JavaScriptで

thisは、そのようなC++やJava、またはC#など、あなたが精通しても他の言語であるよりもかなり異なっています。ファンクションが定義されている場所ではなく、ファンクションがと呼ばれる方法によって完全に定義されます()。 (thisの詳細:Mythical Methods

thisが設定されます主な方法は、あなたがオブジェクトのプロパティだ関数を呼び出すときです:

foo.bar(); 

のプロパティbarをルックアップするためにJavaScriptを伝えますfooオブジェクトを呼び出して呼び出しを試み、this = fooを呼び出してください。したがって、$("selector").myPlugin.plugin_1()を実行すると、thisが、myPluginを参照して終了する理由がわかります.jQueryオブジェクトではありません。

あなたは、代わりに、命名規則を使用するよう$.fn.myPlugin_plugin1があるでしょうか、単に別の、しかし、人々は、彼らが($.fn.myPluginFoo$.fn.myPluginBar)グループ化されている知っている類似の十分な名前でそれらを保ちます。

関連する問題