我有带有树结构的 JSON。我这样渲染它:
var lis = d3.select("#active ul")
.selectAll("li")
.data(getTopLevelChildren(), nodeId);
lis.enter().append("li").each(makeNodeView);
makeNodeView
递归地做同样的事情,在 DOM中创建一个ul
/树。li
但是,我也想动态更新列表。这个直截了当的代码不起作用:
lis.each(updateNodeView);
lis.exit().remove();
问题是递归地selectAll("li")
选择了所有li
节点。因此删除页面上任何位置的所有标签,除了树根处的标签。lis.exit().remove()
li
如何一次只选择 1 个级别的树?