jQueryのeach()で複数の要素、配列、オブジェクトをループ処理

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

jQueryでループ処理を行う際によく使われる each()の使い方を分かりやすくお伝えします。

通常のHTML要素だけでなく、配列やオブジェクトもjQuery.each()で処理できます。

ループから抜ける方法も併せてご紹介します。

 

each() でのループ処理

複数の要素に対してループ処理をします。

複数の要素を処理

HTML

jQuery

結果(コンソール)

ブラウザのコンソールに結果を出力します。

大阪
京都
三ノ宮

上記のようにコンソールに<li>要素のテキストを1つずつ出力させました。

参考:jQueryでコンソールログを使ったデバッグ方法

$(this)を使って要素を取得します。

引数を指定して処理

each()は、引数に連番とループ処理する要素を指定することも可能で、それらを指定して簡単に値を取得できます。

HTML

jQuery

第二引数に指定したvalで値を出力させ$(this)は使っていません。

以下のように、第一引数だけを指定することも可能です。

第二引数は省略し$(this)を使って取得しています。

結果(コンソール)

上記2つのサンプルともに同じ結果になります。

0:大阪
1:京都
2:三ノ宮

今度は連番を振って1つずつ出力させました。

each() の基本構文

for()のようにカウントを取らずに、指定したセレクタの数だけループしてくれるので便利ですね。

  • インデックス
    0から始まる連番を自動で振ってくれる
  • エレメント
    要素のテキストなどの値

参考:jQueryのfor文で繰り返し処理(continue,breakも)

jQuery.each() でのループ処理

複数の要素だけでなく、配列やオブジェクトに対してもループ処理ができます。

複数の要素を処理

まずは通常の要素をループ処理します。

HTML

jQuery

結果(コンソール)

ブラウザのコンソールに結果を出力します。

0:高崎
1:前橋
2:太田

配列を処理

jQuery.each()は、配列やオブジェクトも扱えるのが特徴ですね。

jQuery

結果(コンソール)

ブラウザのコンソールに結果を出力します。

0:高崎
1:前橋
2:太田

配列もループ処理されました。

オブジェクトを処理

オブジェクトも処理可能です。

結果(コンソール)

ブラウザのコンソールに結果を出力します。

takasaki:高崎
maebashi:前橋
ota:太田

オブジェクトもループ処理されました。

インデックスは連番ではなく、オブジェクトで指定したkeyの部分が表示されます。

単なる連番ではなく、独自のキーを命名できるので使い勝手もいいですね。

ちなみに、先ほどのサンプルは第一引数がiだったのに、今回はkeyですが特に意味はありません。

好きに名付けて大丈夫ですが、indexkeyといった意味のある命名をするのが一般的ですね。

jQuery.each() の基本構文

通常のeach()とは以下の部分が違います。

  • $.eachで始まる
  • 対象の要素や配列などは第一引数で指定する

配列や要素はインデックス、オブジェクトはキーを取得できます。

  • インデックス(オブジェクトはキー)
    0から始まる連番を自動で振ってくれる。オブジェクトは独自に命名したキーが取得される。
  • エレメント
    要素のテキストなどの値

ループを抜ける

each()でループを抜ける際continuebreak使えません

ループ処理をスキップ

ループ処理をスキップする際はreturn false以外を使います。

continueは使えません。

HTML

jQuery

第二引数に指定したvalで値を出力させ$(this)は使っていません。

結果(コンソール)

0:大阪
2:三ノ宮

インデックス1の京都がスキップされました。

return truecontinueの代わりとなり、処理をスキップしてくれます。

ちなみにreturn truereturn nullだろうがreturn undefinedであろうがreturn 0であろうが構いません。

return falseでなければ何でもいいのです。

ただreturn continueのようなreturnのあとに文字列を指定するときはreturn 'continue'とクオーテーションで囲わないとエラーになります。

まぁ、ここはreturn trueでいいと思います。

ループ処理を中断

ループ処理を途中で中断させる場合はreturn falseを使います。

breakは使えません。

jQuery

結果(コンソール)

0:高崎
1:前橋

値が前橋まで出力され、それ以降は中断されました。

return falseを使えばそれ以降は処理を中止しますが、ループ処理に限らず、リンクを無効にしたりといった元々の効果を打ち消してくれます。

 

if文を使わない、もう一つのやり方も以下にご紹介します。

jQuery

結果(コンソール)

0:高崎
1:前橋

先ほどと同様に値が前橋まで出力され、それ以降は中断されました。

if文を使わなくていいので、ちょっとはスマートかなぁと思います。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*