0

我的代码通过用户动态添加一个节点来创建一个力有向图。

我的问题是添加节点后我的点击事件没有被触发:

//change the node's colour to blue when clicked
d3.select("svg").selectAll("g.node").on("click", function(OperationName) {
  debugger;
  OperationArray = JSON.parse(localStorage['dynamicNode']);
  var rect = this.firstChild;
  changeColour(rect);
  document.getElementById('selectedOperation').value = OperationName;
  document.getElementById('previousOperation').value = OperationArray[OperationName].inputQueue
  document.getElementById('nextOperation').value = nextOperation;
});

如果我在添加节点后尝试在控制台中运行这段代码,则会触发 click 事件并且节点会更改颜色,但它本身在浏览器中不起作用。

据我了解,我应该在加载图表后运行我的点击事件,但我该怎么做呢?添加节点后,我希望能够随时触发我的单击事件,以便以后可以向其添加更多操作。

工作演示:这里

如果您使用演示:

  1. 当我将上一个和下一个操作保持为“NONE”时,我从“选择一个操作”下拉列表中选择的操作会被添加。

  2. 添加第一个节点后,我添加其他节点,同时提及前一个节点并将下一个节点保持为“NONE”。

  3. 如果我想在中间添加一个节点,我会提到前一个节点和下一个节点(如果它们存在)。

4

1 回答 1

0

答案非常简单,我从这个答案中得到了想法, 我只需将那段代码粘贴到我的绘制函数中,所有内容都在渲染,以便再次绑定。

于 2018-03-20T11:48:02.220 回答