Javascript d3js使工具提示在单击时保持不变

Javascript d3js使工具提示在单击时保持不变,javascript,html,d3.js,Javascript,Html,D3.js,我有一个文本,当我把鼠标放在上面时,我想在上面显示一个提示。这是实现的。现在,我希望提示在我单击此文本后保持不变,并在再次单击文本时消失。我该怎么做?看来“提示秀”不适合这个目的 nodeEnter.append("text") .attr("x", function(d) { return d.children || d._children ? -10 : 10; }) .attr("dy", ".35em") .attr("text-anchor", fu

我有一个文本,当我把鼠标放在上面时,我想在上面显示一个提示。这是实现的。现在,我希望提示在我单击此文本后保持不变,并在再次单击文本时消失。我该怎么做?看来“提示秀”不适合这个目的

nodeEnter.append("text")
      .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
      .attr("dy", ".35em")
      .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
      .text(function(d) { return d.name; })
      .style("fill-opacity", 1e-6)
      .style("font-weight", function(d) { return d.father == undefined ? "":"bold";})
      .style("font-size", function(d) { return d.father == undefined ? "":"14px";})
      .on('mouseover', tip.show)
      .on('mouseout', tip.hide);
“小费”的定义:

  var tip = d3.tip()
      .attr('class', 'd3-tip')
      .offset([-10, 0])
      .html(function(d) { return "index: " + d.index + "<br>other information..."; });

  svg.call(tip);
var tip=d3.tip()
.attr('class','d3 tip')
.偏移量([-10,0])
.html(函数(d){return”索引:“+d.index+”
其他信息…”;}); svg.call(tip);

谢谢

指定一个标记以跟踪是否隐藏。然后将其绑定到单击事件,而不是鼠标悬停

var clickFlag = false;

nodeEnter.append("text")
      .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
      .attr("dy", ".35em")
      .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
      .text(function(d) { return d.name; })
      .style("fill-opacity", 1e-6)
      .style("font-weight", function(d) { return d.father == undefined ? "":"bold";})
      .style("font-size", function(d) { return d.father == undefined ? "":"14px";})
      .on('click', function(d){
          if(clickFlag){
             tip.hide(d);  
          }else{
             tip.show(d);  
          }
          return clickFlag = !clickFlag;
      })

非常感谢。如果条件工作正常,但提示不显示…:(是的,我试过了,这给了我一个非常奇怪的错误,所以我认为应该没有()@jiayi我用
tip.show(d)
/
tip.hide(d)更新了我的答案)
嘿,但由于存在变量“clickFlag”,一次只能显示一个提示。有没有办法让多个提示一起显示?@jiayi当然有;flag变量只是一个例子。您可以在基准内定义标志,如
d.showFlag=false
等,然后从中检查每个单击对象(文本)。