2012-03-25 7 views
35

私は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() 
} 

たがために、このテストを使用して何かをキャッチかどうかをテストおそらく1つ以上のヌル物のための0番目の要素はひどいとハッピーと思われる。代わりにどうすればいいですか?多くのjavascriptを知らないための謝罪。

答えて

66

selection.empty()を使用してください。また、選択項目が空の場合は、その項目を削除する必要はありません。

+6

実はそれは 'selection.empty()'である必要があり、それは関数呼び出しがそれではないでしょうか? – benjaminz

2

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

"Nested Selections"のドキュメントもご覧ください。私はそれがかなり有用であることを発見した。

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

フランク

関連する問題