どうもかわうそです!
今回は『jQuery each()の使い方』を解説します。
eachはforやwhileと同じ繰り返し処理の中の一つです。
使いこなせると記述がグッと短くなります!学んで実践できるようになりましょう。
予備知識として、以下の記事がおすすめです。
jQuery each()の基本構文
使用方法は2種類あります。
[box class=”box3″]$(object).each(function(index,value){});[/box]
[box class=”box3″]$.each(object,function(index,value){});[/box]
objectには配列やhtml要素が入ります。
繰り返し処理になるので、objectの要素それぞれに対して、同じ処理を繰り返してくれます。
そして、eachによって実行されるファンクションの引数には、indexとvalueが引き渡されます。
これだけでは分かりにくいので、例を使いながら学んでいきましょう!
$(object).each()の場合
以下に例を作ってみました。
$(‘#sample li’)で、複数のリスト要素を取得しています。
そのリスト要素毎にテキストを取得し、リスト要素を追加します。
1 2 3 4 5 6 |
<ul id="sample"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn">eachを実行</button> |
1 2 3 4 5 |
$('#btn').click(function(){ $('#sample li').each(function(){ $('#sample').append('<li>'+$(this).text()+'</li>'); }); }); |
- あ
- い
- う
each()の第一引数には、indexが入ります。これも試してみましょう
[box class=”box3″]$(object).each(function(index,value){});[/box]
1 2 3 4 5 6 |
<ul id="sample2"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn2">eachを実行</button> |
1 2 3 4 5 |
$('#btn2').click(function(){ $('#sample2 li').each(function(index){ $(this).text(index); }); }); |
- あ
- い
- う
今回だと取得したリスト要素は3つなので、0-1-2とカウントしてくれていることが分かりますね!
ではこの時第2引数のvalueには、何が渡されているのでしょうか。
コンソール画面で確認してみましょう。
1 2 3 4 5 6 |
<ul id="sample3"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn3">eachを実行</button> |
1 2 3 4 5 |
$('#btn3').click(function(){ $('#sample3 li').each(function(index,value){ console.log(value); }); }); |
- あ
- い
- う
valueには、取得した要素のそれぞれの情報が渡されていることが分かりましたね。
[memo title=”eachメソッドとthis”]eachメソッドではthisを使用することができます。これはeachメソッド内部で、関数が.callされているからなのですが、今回詳しくは省きます。大切なのは、this=valueとなるので、thisを使用すればvalueを省略できます[/memo]
メモの通り、
1 2 3 4 5 |
$('#btn3').click(function(){ $('#sample3 li').each(function(index,value){ console.log(this); }); }); |
でも同じ結果になります。
$.each()の場合
$.each()でeachメソッドを実行することもできます。
コンソール画面で確認してみてください
1 2 3 4 5 6 |
<ul id="sample4"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn4">eachを実行</button> |
1 2 3 4 5 6 |
$('#btn4').click(function(){ $.each($('#sample4 li'),function(index){ console.log(index); console.log(this); }); }); |
- あ
- い
- う
コンソール画面に出力されたと思います
配列を使用するeachを実行する場合
配列でもeachを実行することができます。
1 2 3 4 5 6 |
<ul id="sample5"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn5">eachを実行</button> |
1 2 3 4 5 6 7 |
var array = ["apple","orange","banana"] $('#btn5').click(function(){ $(array).each(function(index){ console.log(this); console.log(index); }); }); |
- あ
- い
- う
もちろん
1 2 3 4 |
$.each(array,function(index){ console.log(this); console.log(index); }); |
でもokです!
- あ
- い
- う
配列を使ったeachの応用
応用でcssを操作してみましょう。
1 2 3 4 5 6 |
<ul id="sample7"> <li>あ</li> <li>い</li> <li>う</li> </ul> <button id="btn7">eachを実行</button> |
1 2 3 4 5 6 |
var array = ["red","blue","green"]; $('#btn7').click(function(){ $.each(array,function(index){ $('#sample7 li').eq(index).css('color',this); }); }); |
- あ
- い
- う
色は変わりましたか??
適切に繰り返し処理を行えば、記述は短く効率的にコードが書けるようになります!
便利なeachメソッド、ぜひ使ってみてくださいね。