NVD3,在加载新图表之前清除svg

Jas*_*air 50 charts d3.js nvd3.js

NVD3在同一个svg中有几个不同的图表.我使用按钮来调用函数,每个函数都包含一个使用自己数据的新图表.

有没有办法清除我的单个svg而不删除它?我想按一个按钮来调用我的图表,但在加载新图表之前清除svg.

使用这种图表时不是问题... multibarhorizontal例如,调用两个图表只是更新形状,这很好.问题是加载两个不同的图表,如线条和条形图.

提前致谢

编辑 - 答案必须是类似d 3.select("svg").remove()但只删除svg.我只想清除它.

Lar*_*off 98

您可以使用选择"svg > *"器选择SVG下方的所有元素,即删除所有这些元素

d3.selectAll("svg > *").remove();
Run Code Online (Sandbox Code Playgroud)


小智 24

这对我有用:

var svg = d3.select("svg");
svg.selectAll("*").remove();
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您正在开发具有显示不同 d3 图表的多个小部件的仪表板,请使用以下内容

d3.selectAll("#d3-donutChart > *").remove(); 
Run Code Online (Sandbox Code Playgroud)

这只会清除特定的图表,而不是网页中的所有 svg。

在订阅 angular 2 中的数据之后添加此行。