jQueryのeachで配列や要素を繰り返す方法【サンプル有】
jQueryの繰り返し処理を操作する.eachメソッドは、多岐に渡って活用します。
是非、.eachを極めて開発を効率化を目指しましょう。
変数の配列・オブジェクトを繰り返す.each
.eachは、配列を繰り返し取得することが出来ます。
$.each の第一引数に配列を入れることで、key変数に連番、value変数に値が代入されます。
<script> $(function(){ var array = ['apple', 'banana', 'grape']; $.each(array, function(key, value){ console.log(key + ' : ' + value); }); }); </script>
また、連想配列も同様にeachで繰り返し処理が出来ます。
<script> $(function(){ var array = {apple: 'りんご', banana: 'バナナ', grape: 'ぶどう'}; $.each(array, function(key, value){ console.log(key + ' : ' + value); }); }); </script>
指定した要素を繰り返す.each
eachは、DOM要素に対して指定もできます。
key変数には連番が、valueにはDOM要素の取得ができます。
繰り返しのvalueを$(value)と書くことで、繰り返しの要素をDOM要素として、各種メソッドで操ることが出来ます。
下記の例ではliのテキスト部分を取得するために、$(value).text()を使用しています。
<ul class="ex_ul"> <li>apple</li> <li>banana</li> <li>grape</li> </ul> <script> $(function(){ $('.ex_ul li').each(function(key, value){ console.log(key + ' : ' + $(value).text()); }); }); </script>
- apple
- banana
- grape
繰り返し処理をスキップする(continue処理)
繰り返し処理をスキップする処理は、each内に「return true;」と記述することでスキップできます。
<script> $(function(){ var array = ['apple', 'banana', 'grape']; $.each(array, function(key, value){ if(value === 'banana'){ //bananaだけ処理がスキップされる return true; } console.log(key + ' : ' + value); }); }); </script>
繰り返し処理を中断する(break処理)
繰り返し処理そのものを中断したい場合は、each内に「return false;」と記述することで、繰り返しが終了します。
<script> $(function(){ var array = ['apple', 'banana', 'grape']; $.each(array, function(key, value){ if(value === 'banana'){ //bananaの時点で処理を終了する return false; } console.log(key + ' : ' + value); }); }); </script>
.eachメソッドの使用例
eachの実践的な使い方を一例として挙げておきます。
例えば、フォーム内の送信ボタンを押した時、同じ<from></from>内のinput要素すべての値を設定した場合のみ送信したい場合は、ボタンと同じformに囲まれたテキストボックスをチェックする必要があります。
そういう時、まずはボタン押下時にformの親要素を取得し、次に.find()でinput要素をeachでチェックすることで、form内のinput要素の値の有無を検索できます。
親要素を取得する.closest、子要素を取得する.findの合わせ技なので、下記のリンクもチェックしておいてください。
<form> <div>名前を入力</div> <input type="text" name="username" value=""> <div>郵便番号を入力</div> <input type="text" name="userpost" value=""> <div>住所を入力</div> <input type="text" name="useraddress" value=""> <div>電話番号を入力</div> <input type="text" name="usertel" value=""> <input type="button" class="usersubmit" value="送信する"> </form> <script> $(function(){ $('.usersubmit').click(function(){ var error_flg = false; //form要素(ボタンを囲っているform親要素)を取得する var this_form = $(this).closest('form'); //ボタンを押したform内に含まれているinput要素をすべてeachで取得し、未入力のものがないか調べる this_form.find('input').each(function(key, value){ if(!$(value).val()){ error_flg = true; //未入力のテキストボックスは枠を赤くする $(value).css('border', '1px solid red'); }else{ $(value).css('border', '1px solid #CCC'); } }); if(error_flg){ alert('未入力の項目があります。'); }else{ alert('OK!'); //↓form送信を行いたい場合は、.submit()で送信が可能 //this_form.submit(); } }); }); </script>
PHPの配列とのjQueryの連携で、.eachで繰り返し処理をする
PHPの配列をJavaScriptの配列(json)に変換して、eachで繰り返し処理をすることもできます。
//PHPで配列を設定 $array = ['apple', 'banana', 'grape'];
<script> $(function(){ //PHPで設定した配列をjson_encodeでjsonに変換 //var array = <?php echo json_encode($array) ?>; と書くと、ソースには下記のように表示される var array = ["apple","banana","grape"]; $.each(array, function(key, value){ console.log(key + ' : ' + value); }); }); </script>
PHPとjQueryを密接に扱うWEBアプリでは、json_encode()で配列を取得することはよくあるので、是非覚えておきましょう。
また、配列内の検索としても$.eachは大活躍しますので、こちらの$.eachの活用例も是非ご確認ください。
以上、jQueryのeachで配列や要素を繰り返す方法、でした。
ディスカッション
コメント一覧
まだ、コメントがありません