2010-12-27 24 views
1

私はオブジェクトとして使用したいjQuery-Pluginを作成しました。だから、プラグイン内でいくつかの関数を宣言しました。これはメソッドを持つオブジェクトのように、他の場所から呼び出したいものです。それも可能ですか?jQuery-Plugin-functionの内部関数を呼び出しますか?

それをシンプルに保つために:

$.myPlugin.foo(); 

しかし、それは動作するようには思えない。

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     function foo() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

その後、私は次のようにプラグインの外側から内側の関数を呼び出したいです。だからそれは可能ですか?それとも他の解決策がありますか?私はこの目的のために通常の無関係のjQueryクラスを使用したくありません。このプラグインは他のjQuery-Pluginsと一緒に動作するはずです。好き

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     $.fn.myPlugin.foo = function() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

そして、あなたはそれを呼び出すことができます:

答えて

1

この方法:

(function($){ 
    $.fn.myPlugin = (function(){ 
     // Here I want methods... 
     this.foo = function() 
     { 
      // do something... 
     } 
    })(); 
})(jQuery); 
+0

ありがとう。この解決策は私の要求に合っているようです。残念ながら、コードにエラーがあります。メソッド宣言の後に '();'を置かなければならないでしょう。 –

+0

私はおそらくjavascriptで少し錆びています。必要に応じて投稿を編集してください。 –

2

あなたは$.fnを使用することができますし、このようなあなたのコードを再書き込みありがとう

myPlugin().foo; 
+0

あなたの答えをありがとう。よく働く。私はむしろアレクサンドルCの解決策を好むだろう。それはよりエレガントなようだ。 –

+0

@faileN:確かにそれと一緒に行くことができますが、それは本質的に同じことに注意してください:) – Sarfraz

+0

Yupp私は知っています。あなたのことが間違っていると言っていない:)私はちょうどアレクサンドルC.ソリューションはよりエレガントだと思った:P –

1

jQueryのドキュメントサイトrecommends a good way of doing it:make $.fn.myPluginは、関数の名前を最初のパラメータとし、残りの引数をすべて正しい関数に渡します。サンプルコードは多少時間がかかりますので、そのサイトを見てください。

+0

それはまた非常にクールな解決策です。しかし、これは私がプラグインで持っていたい1つのメソッドのためにはるかにあふれています:)ありがとう。私はより大きな仕事のためにそれを念頭に置いています:) –

関連する問題