selection.exit - 余った要素を選択する

投稿日: / 更新日:

d3.jsのselection.exit()は、実際に存在する要素に対して、関連付けたデータの数が足りなかった場合に、その差分の要素だけを含んだd3.selectionオブジェクトを作成するメソッドです。enter()の反対の働きをします。

サンプルコード

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

// ul要素の中の、li要素を選択状態にする
.selectAll( "li" )

// li要素にデータ(3個)を関連付ける (2個足りない)
.data( [ "1個目のLI", "2個目のLI", "3個目のLI" ] )

// [exit()]を実行する
.exit()

// 余った分のli要素のテキストを変更する
.text( "余ってるで、これ" ) ;

デモ

仕組み

exit()は、「データの数に対して余った分の要素だけを選択してくれる」と理解しておけば、支障はないと思います。

<ul>
	<li>1つ目の要素</li>
	<li>2つ目の要素</li>
	<li>3つ目の要素</li>
	<li>4つ目の要素</li>
	<li>5つ目の要素</li>
</ul>
// ul要素の中の全てのli要素を選択
d3.select( "ul" ).selectAll( "li" ) ;

exit()は、data()とセットで利用する関数です。要素の数が5個なのに対し、3個のデータを関連付けます。

// データを関連付けする (3個の値だから、2個のli要素が余ることになる)
.data( [ "1個目のLI", "2個目のLI", "3個目のLI" ] ) ;

ここでexit()を実行すると、データが関連付けられない、4個目、5個目のli要素を含むd3.selectionオブジェクトが返ります。

// 余った分を選択する
.exit() ;

exit()で選択した要素に対して、処理を行なうことができます。例えば、データが関連付けられない分に関しては削除、といった処理が可能です。

// 余ったli要素を削除する
.remove() ;

構文

selection = selection.exit()
戻り値
項目説明
selection関連付けるデータの数を超えた分の要素を含んだd3.selectionオブジェクトが戻り値となる。