Javascript 在力图D3JS上添加标签

Javascript 在力图D3JS上添加标签,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在尝试向动态创建的力图添加标签。这是代码 这是我添加文本元素的代码的相关部分 labels = labels.data(links); labels.exit().remove(); labels.enter() .append("text") .attr("text-anchor", "middle") .attr("x", 0) .attr("dy", 16) .append("textPath") .attr("startOffset

我正在尝试向动态创建的力图添加标签。这是代码

这是我添加文本元素的代码的相关部分

labels = labels.data(links);

labels.exit().remove();

labels.enter()
    .append("text")
    .attr("text-anchor", "middle")
    .attr("x", 0)
    .attr("dy", 16)
    .append("textPath")
    .attr("startOffset", "50%")
    .attr("xlink:href", function(d,i){ return "#id" + i})
    .text("label");
这是我制作的一把小提琴,它展示了这个问题

(因为其较大的
stackoverflow
不允许我创建该大小的代码段)

如果单击“添加”按钮,将创建一个节点,并通过从一个节点拖动到另一个节点来绘制连接线。要在节点周围移动,请使用ctrl+拖动


我正在尝试添加标签,文本元素正在添加。但它总是占据0的高度和宽度,并在屏幕的左上角结束。我做错了什么

您没有设置路径元素的ID。这样试试

 path.enter().append('svg:path')
    .attr('class', 'link')
    .attr("id",function(d, i) {
      return "id" + i; //Sets id to the path elements which will be used in textPaths later
    })
    .classed('selected', function(d) {
      return d === selected_link;
    })
    .style('marker-start', function(d) {
      return d.left ? 'url(#start-arrow)' : '';
    })
    .style('marker-end', function(d) {
      return d.right ? 'url(#end-arrow)' : '';
    })
    .on('mousedown', function(d) {
      if (d3.event.ctrlKey) return;

      // select link
      mousedown_link = d;
      if (mousedown_link === selected_link) selected_link = null;
      else selected_link = mousedown_link;
      selected_node = null;
      restart();
    });

更新了

您希望标签放在哪里?为什么标题
禁用select2 on change中的某个元素不起作用
?我不知道这是怎么回事。可能是上一个未问问题的标题。反正是编辑的。