我无法理解d3js的退出选择。我的理解是,如果从数据集中删除数据,并调用remove,则d3将在页面上找到数据集中不再存在的元素并将其删除。我创造了一个小提琴来说明我的问题:
d3.selectAll('relevantElement').data(updatedData).exit().remove()
答案 0 :(得分:1)
退出选择按预期工作,匹配不能按预期工作。原因是默认情况下,它使用索引匹配元素。也就是说,数据数组中的第一个元素匹配第一个DOM元素,第二个元素匹配第二个元素,依此类推。
您可能想要做的是匹配内容而不是索引。你可以通过提供一个告诉D3如何匹配的关键函数来做到这一点:
d3.selectAll('p').data([3,4], function(d) { return d; }).exit().remove();
完整演示here。