2012-03-25 2 views
35

Robię przełącznik w d3 i próbuję unikać zmiennych globalnych.poprawny sposób na sprawdzenie, czy moja selekcja przechwyciła jakieś istniejące elementy

mogę iść dalej i wybrać element, jakby to był już na scenie:

d3.select('#awesome_line_graph') 

a następnie sprawdź, czy złapałem nic korzystając

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

ale badania dla element zerowy dla może więcej niż jednej pustej rzeczy wydaje się okropny i hacki. Jak powinienem to zrobić? Przepraszam, że nie znam zbyt wiele javascript.

Odpowiedz

66

Użyj selection.empty(). Ponadto, jeśli wybór jest pusty, nie trzeba go usuwać.

+6

Właściwie powinno to być 'selection.empty()', jest to wywołanie funkcji, prawda? – benjaminz

2

Gorąco polecam przeczytanie dokumentu Mike'a Bostocka o numerze D3 Workshop. W nim opowiada o tym, w jaki sposób selekcja zwraca tablicę elementów pasujących do kryteriów wyboru. Dlatego, jeśli długość tablicy jest większa niż "0", oznacza to, że została odpowiednio dopasowana i wybrana.

Możesz również przeczytać jego dokumentację na "Nested Selections." Znalazłem to całkiem przydatne.

Mam nadzieję, że to pomoże.

Frank

Powiązane problemy