我有一个 D3 力有向图,它首先显示有几个节点。每个节点都有一个单击处理程序,它将进一步扩展图形并动态添加更多节点和链接到单击的节点。每个节点也有一个 SVG 矩形。因为新的链接和节点被添加到现有的图表中,链接出现在点击节点的顶部,因为 SVG 是“画家”模型。所以我使用 d3.selectAll().filter().sort() 以正确的顺序放置 DOM 节点。除了节点和链接在有向图上放错位置外,这是可行的。有什么方法可以使用 sort() 并且保持 force.nodes() 和 force.links() 数据同步?
更新:我创建了一个 jsfiddle 来演示这种情况。单击几下创建新节点后,链接变得不稳定。如果注释掉对“reorder_nodes_and_links()”的调用,则图表是稳定的,但由于 DOM 顺序,链接会呈现在节点之上。