カテゴリー︎: 【JavaScript】・【jQuery】
IDを変更できない時に有効
異なる複数のIDを、新しいIDの変更する場合のメモ
.each()メソッドをつかうやりかた
.each()メソッドとは
第1引数には各要素のインデックス番号が参照され
第2引数には繰り返し処理中の要素が参照される
2つの引数はどちらも省略可能
.each()メソッドを使うことで
要素数分を繰り返し指定した関数を実行することができる
よくソースで見られる
第1引数は( i は indexの略 )
第2引数はElement型( e は elementの略 )
DOM Element として使いたい場合はそのまま、
jQueryオブジェクトとして使いたい場合は$( )をつける
$('h2').each(function(i,e) { console.log(i + ': ' + $(e).text()); });
第2引数を指定してない場合に処理中の要素を取得する場合はthisを使う
$('h2').each(function(i) { console.log(i + ': ' + $(this).text()); });
配列とオブジェクトを指定する場合⇒こちら
全体のソース
すでにh2で指定したIDを変更したいが、ページの量が多すぎて
変更するのが面倒な時にjQueryで指定したIDを変更する
<body> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(function() { $('h2').each(function(i, e){ // $('h2').attr('class', 'newClass');//新しいクラス名をつける場合 //異なるIDを変更して、新しいIDを付与する $('[id=article__title_1]').attr("id", "article__title_AAA"); $('[id=article__title_2]').attr("id", "article__title_BBB"); $('[id=article__title_3]').attr("id", "article__title_CCC"); console.log(index + ':' + $(e).text()); }); /* 0:企業情報 1:サービス紹介 2:アクセス */ }); </script> 目次に戻るためのIDを生成するjavascript <div id="wrap"> <h1>目次に戻るためのIDを生成するjavascript</h1> <h2 id="article__title_1">企業情報</h2> <div class="box-01"> <div class="article"> <p>時期尚早な最適化はすべての悪の根源である byドナルド・クヌース</p> <p class="gotoTop"><a href="#">topに戻る</a></p> </div> </div> <h2 id="article__title_2">サービス紹介</h2> <div class="box-02"> <div class="article"> <p>時期尚早な最適化はすべての悪の根源である byドナルド・クヌース</p> <p class="gotoTop"><a href="#">topに戻る</a></p> </div> </div> <h2 id="article__title_3">アクセス</h2> <div class="box-03"> <div class="article"> <p>時期尚早な最適化はすべての悪の根源である byドナルド・クヌース</p> <p class="gotoTop"><a href="#">topに戻る</a></p> </div> </div> </div> </body>
このコード実行によって
id=article__title_1 ⇒ article__title_AAA に変更
id=article__title_2 ⇒ article__title_BBB に変更
id=article__title_3 ⇒ article__title_CCC に変更
できた
しかし このようなパターンが100回必要な場合は100行追加しなければないない。。。
が
そのときがきたら考える
今はこれでよしとする
時期尚早な最適化はすべての悪の根源である byドナルド・クヌース