2011-09-08 2 views
9

私は、単一の機能を持つjQueryプラグインを検討しています。コンストラクタの引数は、関数はヘルパー関数のカップルを定義し、その後、最後の部分として)(this.eachの呼び出しを返すものの、適切なデフォルト値を設定した後、そのよう:jQueryで "this.each()"を返すのは何ですか?

return this.each(function() { 
//long method defined here 
}); 

私はの使用を理解します一致するDOM要素などを変更する際にthis.each()を実行しますが、return文はどのように処理されますか?変更されたDOM要素の並べ替えの並べ替えは、他の呼び出しでチェーンすることができますか?

私はこのサイトについてthis.eachについて読んだことがありますが、ここではreturnが何をしているのかよく分かりません。これをクリアするのを助けてくれてありがとう。

答えて

7

それは要素の束の上にプラグインやイベントを呼び出し、その同じを適用する1することができますへの関数やイベント、それらのすべて

あなたがない場合:

$('.selector').myPlugin(); 

そして、私たちは言わせて、もし、.selectorには10個の要素が含まれ、10個の要素はすべてmyPluginになります。


.each文は、それが与えられ、それはあなたが1つのjQueryの要素に一緒にチェーン複数の機能やプラグインすることができますされたものは何でも.each()返すためであることを返すための理由。例えば

$('.selector').myPlugin().yourPlugin(); 
+0

fluent interface感謝を参照してください。私は、私が混乱しているのは、同じ行に 'return'とthis.each()をつけていることだと思います。同等のものとしてthis.each(...)を呼び出して、その関数呼び出しの最後に次の行に 'return this'と書くことができますか? – larryq

+0

上記をタイプしたら、今起こっていることが分かると思います。私はthis.each(..)の結果をjQueryオブジェクトとなる変数に保存し、メソッドの最後にそれを返さなければなりません。 this.each(...)のコンテキスト内の 'this'は、関数と呼ばれるDOM要素を参照します。 – larryq

10

.eachは、呼び出された要素を返します。この場合、おそらくそのセレクタにチェーンされるメソッドの能力を維持することです。これは、プラグインのメソッドがfooと呼ばれている場合fooが意味をなさ基本的に$("mySelector").

希望です.eachの結果を返しますので、あなたが

$("mySelector").foo().show(); 

を行うことができることを意味します。

4

このあなたがこのようなjqueryのメソッドを呼び出すことができますので、それが可能、オブジェクトにチェーンを維持するために行います。

$("selector").css().mouseover().etc().blahblah(); 
2

機能はチェーン可能となります。したがって、返された値に対して別のメソッドを呼び出すことができます。

// without method chaining 
myobject.a() 
myobject.b() 
myobject.c() 

// with method chaining 
myobject.a().b().c(); 

は、回答のためにみんなにmethod chaining

関連する問題