selection.insert - 要素を挿入する

投稿日: / 更新日:

d3.jsのselection.insert()は、指定された位置に要素を挿入するためのAPIです。

サンプルコード

<ul>
	<li>1つ目のLI</li>
	<li>2つ目のLI</li>
	<li>3つ目のLI</li>
	<li>4つ目のLI</li>
	<li>5つ目のLI</li>
</ul>
// ul要素を選択
var selection = d3.select( "ul" ) ;

// 1番最後に新しいli要素を挿入 (第2引数なし)
selection.insert( "li" ) ;

// 4番目のli要素の前に新しいli要素を挿入 (第2引数あり)
selection.insert( "li", ":nth-child(4)" ) ;

// 4番目のli要素の前に新しいli要素を挿入 (第1引数を関数で指定)
selection.insert( function() {
	var liElement = document.createElement( "li" ) ;
	return liElement ;
}, ":nth-child(4)" ) ;

デモ

構文

selection = selection.insert( string || function [, before] )
引数
項目説明
string第1引数に追加したい要素のタグ名を文字列で指定する。指定したタグ名の要素が新しく生成(createElement)される。名前空間を指定する場合、ns:tagとプレフィクスを付けて指定する。svgxhtmlxlinkxmlxmlnsに関しては、プレフィクスを指定しなくても認識される。
function第1引数に関数を指定すると、戻り値を値として指定できる。この関数は、直前でdata()を利用した場合、第1引数で配列の値、第2引数でインデックス番号を受け取る。関数の戻り値は、タグ名を表す文字列ではなく、要素(ノード)でなければいけない。
before省略可。省略時は一番最後に挿入される(append()と同じ)。第2引数で挿入する位置を指定できる。対象要素の子要素の番号を、CSSの擬似セレクタ(:first-child:nth-child(4)など)で指定する。ここで指定した位置の直前に、要素が挿入される。誤って存在しない位置を指定してしまった場合、第2引数を省略した時と同様に一番最後に挿入される。
戻り値
項目説明
selection引数を指定してHTMLを変更した場合は、d3.selectionオブジェクトが戻り値となる。

ノート

文字列ならタグ名
第1引数が文字列なら、そのタグ名を指定する。
関数なら要素
第1引数が関数なら、戻り値が要素(ノード)になるようにして指定する。
省略したらappend
第2引数を省略した場合、append()と同じで一番最後に追加される。
間違えたらappend
無効な位置を指定してしまった場合も、append()と同じで一番最後に追加される。