2012-03-25 6 views
35

Estoy haciendo un alternar en d3 y tratando de evitar las variables globales.manera correcta de saber si mi selección captó elementos existentes

puedo seguir adelante y seleccionar el elemento que a pesar de que ya estaba en la escena:

d3.select('#awesome_line_graph') 

y luego prueba para ver si alcanzara nada usando

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

pero esta prueba para el elemento zeroth para tal vez más de una cosa nula parece terrible y hacky. ¿Cómo debería hacerlo? Disculpas por no saber mucho javascript.

Respuesta

66

Utilice selection.empty(). Además, si la selección está vacía, no hay necesidad de eliminarla.

+6

En realidad debería ser 'selection.empty()', es una función llamada ¿no? – benjaminz

2

Le recomiendo que lea el documento D3 Workshop de Mike Bostock. En él, habla sobre cómo una selección devuelve una matriz de elementos que coinciden con los criterios de selección. Por lo tanto, si la longitud de la matriz es mayor que "0", ha emparejado y seleccionado correctamente.

Es posible que también desee leer su documentación en "Nested Selections". Lo encontré bastante útil.

Espero que esto ayude.

Frank

Cuestiones relacionadas