今回は jQuery で用意されている append , appendTo , before , after 関数を使って要素の追加を行う方法について説明します。
■各関数の定義について
関数名 | 書式 | 引数 | 戻り値 |
---|---|---|---|
append | $.(セレクタ).append(content) | セレクタ:追加対象要素を指し示す文字列 content:追加する文字列、DOM Elementおよび jQueryオブジェクト |
jQueryオブジェクト |
appendTo | $.(セレクタ).appendTo(content) | セレクタ:追加する要素を指し示す文字列または、 追加文字列 content:追加対象要素を指し示す文字列 (セレクタ) |
jQueryオブジェクト |
before | $.(セレクタ).before(content) | セレクタ:追加対象要素を指し示す文字列 (実際はこのセレクタの外側の前方に追加) content:追加する文字列、DOM Elementおよび jQueryオブジェクト |
jQueryオブジェクト |
after | $.(セレクタ).after(content) | セレクタ:追加対象要素を指し示す文字列 (実際はこのセレクタの外側の後方に追加) content:追加する文字列、DOM Elementおよび jQueryオブジェクト |
jQueryオブジェクト |
ここで注意するのは appendTo 関数で append とは逆の指定となり、 appendTo の引数(content)で指定されたセレクタの子要素の最後に $.(セレクタ) の「セレクタ」部分が追加されます。
また before , after 関数は指定されたセレクタの外側の前後へ、指定文字列等(content)が追加されます。
では実際の例を以下に示します。
■要素を追加する方法(append,appendTo,before,after)
<html> <head> <meta charset="utf-8"> <title>jquery append</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> var i = 1; // append による指定要素の最後にHTML文字列の追加 function doAppend() { $("#maindiv").append("<p>追加の要素(" + i + "):append</p>\n"); i++; // これを無くして上の「i」⇒「(i++)」でもOK return false; } // appendTo によりHTML文字列を指定要素の最後に追加 function doAppendTo() { $("<p>追加の要素(" + (i++) + "):appendTo</p>\n").appendTo("#maindiv"); return false; } // before による要素の追加 function doBefore() { $("#maindiv").before("<div>追加の要素(" + (i++) + "):before</div>\n"); return false; } // after による要素の追加 function doAfter() { $("#maindiv").after("\n<div>追加の要素(" + (i++) + "):after</div>"); return false; } </script> </head> <body> <h1>jquery append</h1> <div id="maindiv"> </div> <button onclick="doAppend();">append</button> <button onclick="doAppendTo();">appendTo</button> <button onclick="doBefore();">before</button> <button onclick="doAfter();">after</button> </body> </html>
上記のソースを実行し、「append」ボタンを2回押下後、「appendTo」「before」「after」ボタンを順に押下すると、HTML内のソースは以下の様になります。
<h1>jquery append</h1> <div>追加の要素(4):before</div> <div id="maindiv"> <p>追加の要素(1):append</p> <p>追加の要素(2):append</p> <p>追加の要素(3):appendTo</p></div> <div>追加の要素(5):after</div>
上記では appendTo 関数は追加処理と説明しましたが、実は移動処理が本当の処理なのです。
「$.(セレクタ).appendTo」のセレクタの中がHTMLのDOMのなかで、存在しないものであれば、その文字列そのものを追加処理し、 存在するセレクタであればそれ自身を移動します。
それでは、以下のソースを見て下さい。
■appendToについて
<html> <head> <meta charset="utf-8"> <title>jquery append2</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> // appendTo によりHTML文字列を指定要素の最後に追加 function doAppendTo1() { $("<p>追加の要素:appendTo</p>\n").appendTo("#maindiv"); return false; } // appendTo によりセレクタで指定されたHTML文字列を指定要素の最後に移動 function doAppendTo2() { $("#padd").appendTo("#maindiv"); return false; } </script> </head> <body> <h1>jquery append2</h1> <p id="padd">「id=padd」の行</p> <div id="maindiv"> <p>「id=maindiv」の中の最初の行</p> </div> <button onclick="doAppendTo1();">appendTo1</button> <button onclick="doAppendTo2();">appendTo2</button> </body> </html>
「appendTo1」ボタンを押下すると常に「<p>追加の要素:appendTo</p>」が追加され、 「appendTo2」ボタンを押下すると「id="padd"」の行が追いかける様に最後の行に移動するのが分かると思います。
appendTo 関数は子要素の最後に移動しますが、先頭に追加するには prependTo 関数があります。 また append 関数に対しては prepend 関数があります。
コメント