【不定期連載】読解 jQuery Vol.2

jQuery.each()

.each()は渡されたjQueryオブジェクトに対して繰り返し処理を行うイテレータ関数です。
例えば次のようなHTMLがあったとします。

.each()を使うことでそれぞれの<li>要素に対して処理を行うことができます。

またこの式は次のように変形することもできます。 

こうすると.each()配列を受け取って順繰りに処理する 関数であることが分かります。
そのため、jQueryオブジェクト以外でも処理することができます。

 ここからはjQueryのソースコードを見ていきます。
jQuery.each() は以下のように実装されています。

メソッドチェーンの中で.each()を呼び出すと、thisを第1引数として渡します。

$('ul > li').each(function() {…});$.each($('ul > li'), function() {…}); が同じ動作をするのはこのためです。

jQuery.each()は第1引数で受け取ったobjectfor文でひとつずつまわして、第2引数のコールバック関数に渡しています。

 ここでポイントになるのは.callメソッドです。
このメソッドは、あるオブジェクトに属するメソッドを別のオブジェクトのメソッドのように呼び出せるもので、第1引数に渡したものがそのメソッド内でのthisになります。
jQuery.each()の第2引数に指定した関数内でthisが使える理由はここにあります。

 次回は .css() について見ていきたいと思います。

●この記事を書いた人