web-dev-qa-db-ja.com

私の選択が既存の要素をキャッチしたかどうかを判断する正しい方法

D3でトグルを作成し、グローバル変数を回避しようとしています。

先に進んで、アイテムが既にシーンにあるかのように選択できます。

d3.select('#awesome_line_graph')

次に、使用して何かをキャッチしたかどうかをテストします

if (d3.select('#awesome_line_graph')[0].every(function(d){return d===null})){
    // draw awesome line graph
} else {
    d3.select('#awesome_line_graph').remove()
}

しかし、複数のnullの場合のゼロ番目の要素に対するこのテストは、ひどくてハックのようです。代わりにどうすればよいですか?多くのJavaScriptを知らないことをおologiesびします。

44
Mike Dewar

selection.empty() を使用します。また、選択範囲が空の場合、削除する必要はありません。

81
mbostock

Mike Bostockの D3 Workshop ドキュメントを読むことを強くお勧めします。その中で、彼は選択が選択基準に一致する要素の配列を返す方法について語っています。したがって、配列の長さが「0」より大きい場合は、適切に一致して選択されています。

また、「 Nested Selections 」に関する彼のドキュメントを読むこともできます。とても便利だと思いました。

これがお役に立てば幸いです。

フランク