我的代码通过用户动态添加一个节点来创建一个力有向图。
我的问题是添加节点后我的点击事件没有被触发:
//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 事件并且节点会更改颜色,但它本身在浏览器中不起作用。
据我了解,我应该在加载图表后运行我的点击事件,但我该怎么做呢?添加节点后,我希望能够随时触发我的单击事件,以便以后可以向其添加更多操作。
工作演示:这里
如果您使用演示:
当我将上一个和下一个操作保持为“NONE”时,我从“选择一个操作”下拉列表中选择的操作会被添加。
添加第一个节点后,我添加其他节点,同时提及前一个节点并将下一个节点保持为“NONE”。
如果我想在中间添加一个节点,我会提到前一个节点和下一个节点(如果它们存在)。