web-dev-qa-db-fra.com

Comment puis-je créer un événement de double clic sur le nœud dans d3.js?

Je veux faire un double clic sur les nœuds. J'ai donc essayé

.on("dbclick",function(d){return "http://google.com");});

et

.bind({"dbclick",function(d){alert("hello")} });

Mais tout a échoué. Quelqu'un peut-il m'aider?

Les codes complets sont ci-dessous.

var node = svg.selectAll(".node")
    .data(graph.nodes)
    .enter().append("g")
    .attr("class", "node")
    //.on("dbclick",function(d){return "http://google.com");});
    //.attr("xlink:href", function(d){return d.url;}
    .call(force.drag);
    //.bind({"dbclick",function(d){alert("hello")} });

Enfin, j'ai utilisé une méthode ci-dessous. (dblclick fonctionne également)

var node = svg.selectAll(".node") .data(graph.nodes) .enter().append("a") 
              .attr("class", "node") .attr("target", "_blank")
              .attr("xlink:href", function(d){return "google.com";;}) 
34
JonghoKim

Vous pouvez utiliser "dblclick" au lieu de "dbclick":

nodes.on("dblclick",function(d){ alert("node was double clicked"); });
62
toshi

Si vous utilisez D3 observable:

const nodeEnter = node.enter().append("g")
        .on("dblclick", d => {
          d3.event.preventDefault();
          // do your thing
        });
0
Cybernetic