jQuery で innerHTML の書き換え/取得/追記/削除を行う方法
<div> タグの内容を編集したい!
<span> タグの内容を編集したい!
そんな時 JavaScript では innerHTML のプロパティを利用します。指定した要素の中身を取得、書き換え、そして削除が行えます。これを jQuery で実装する場合 .html() を利用します。しかし innerHTML の処理を全て .html() に置き換えるのはおすすめできません。
用途に応じていくつかの関数を使い分けることで、処理内容が分かりやすいプログラムになります。では具体的な処理パターンを例に挙げて、innerHTML を jQuery で実装するサンプルを紹介しましょう。
サンプルプログラムでは、id:hogehoge を持つ div 要素に対して処理する例で説明していきます。それぞれ処理用ボタンのクリックイベントを起点に、プログラムが走るようにコーディングします。
<div id="hogehoge">要素内のテキスト【変更前】</div>
なお下記の説明では変更箇所がわかるように、div 要素に背景色を加えています。
innerHTML の書き換え処理を jQuery で実装
// 一般的なJavaScriptで実装 function test() { document.getElementById("hogehoge").innerHTML = "要素の内容を書き換えます"; } // jQueryで実装 $(function () { $("#edit_button").click( function() { $("#hogehoge").html("要素の内容を書き換えます"); }); });
書き換え処理のサンプル
設定するテキストは、html タグが含まれていても構いません。
innerHTML の取得処理を jQuery で実装
// 一般的なJavaScriptで実装 function test() { var hogeText = document.getElementById("hogehoge").innerHTML; alert(hogeText); } // jQueryで実装 $(function () { $("#get_button").click( function() { var hogeText = $("#hogehoge").html(); alert(hogeText); }); });
取得処理のサンプル
もし、取得元の要素に html タグが含まれている場合は、エスケープされない状態で値が取得されます。
innerHTML の追記処理を jQuery で実装
要素内への追記は .html() を利用せずに .append() を用います。
// 一般的なJavaScriptで実装 function test() { document.getElementById("hogehoge").innerHTML += "追記したい内容!"; } // jQueryで実装 $(function () { $("#add_button").click( function() { $("#hogehoge").append("追記したい内容!"); }); }); // innerHTML のように記述することも可能だが煩雑になる $(function () { $("#add_button").click( function() { $("#hogehoge").html($("#hogehoge").html() + "追記したい内容★"); }); });
追記処理のサンプル
追記する内容に html タグが含まれていても何も問題ありません。
innerHTML の削除処理を jQuery で実装
削除処理は、何を削除したいかによって利用するメソッドが異なります。ここでは .remove()、.empty() を使った例も紹介しますが、目的によって使い分ける必要があります。
// 一般的なJavaScriptで実装 function test() { document.getElementById("hogehoge").innerHTML = ""; } // jQueryで実装 .html() は <div> を残して中身を空にする $(function () { $("#del_button").click( function() { $("#hogehoge").html(""); }); }); // jQueryで実装 .remove() は <div> をまるごと削除 $(function () { $("#del_button").click( function() { $("#hogehoge").remove(); }); }); // jQueryで実装 .empty() は id:hogehoge の子要素を全て削除 $(function () { $("#del_button").click( function() { $("#hogehoge").empty(); }); });
削除処理のサンプル .html(“”)
削除処理のサンプル .remove()
削除処理のサンプル .empty()
div タグに背景色を設定しているので、div 要素が残るケースと消えるケースの違いが理解できたかと思います。
.empty() と .html(“”) の処理は結果的に同じになります。プログラム的には .empty() を利用したほうが意図する内容が伝わりやすいかもしれません。変数値で書き換えるような場合は .html([変数]) のほうが勝手が良いでしょう。
.remove() は外側の div 要素を消してしまうため、JavaScript の innnerHTML とは別物の処理になります。一度消してしまった要素は、画面を再読込するまで消えたままになるので、処理の違いを理解した上で利用するようにしましょう。