2012-01-31 20 views
10

Estoy trabajando para crear un gráfico no dirigido con diseño de fuerza. Además, intento ajustar el color de cada círculo (nodo) con el evento click. ¿Hay alguna idea de agregar tal evento en los elementos del círculo? I tyry este código sin embargo, no está funcionando.d3.js ¿Cómo agregar acción de clic a un círculo de diseño de fuerza?

vis.selectAll("circle.node").on("click", function(d){ 
    vis.select(d).attr(r, 25) 
    .style("fill","lightcoral") 
    .style("stroke","red"); 
}); 
+0

¿Querías 'attr ('r', 25)'? – Dogbert

+0

Necesito hacer tales cambios de attr pero no puedo seleccionar el nodo que está seleccionado. Es decir, trato de usar "d" como func. argumento para elegir el círculo pero no funciona. – erogol

Respuesta

17

select(d) hace referencia a los datos, no al elemento. Es necesario que select(this)

vis.selectAll("circle.node").on("click", function(){ 
      d3.select(this).attr('r', 25) 
       .style("fill","lightcoral") 
       .style("stroke","red"); 
     }); 
2

vis.select(this) me da una excepción de DOM. d3.select(this) funciona para mí. También puede usar d3.event.target para acceder al elemento DOM en el que se hace clic.

Cuestiones relacionadas