根据D3.js中的数据可用性删除当前元素

时间:2013-11-30 23:26:35

标签: javascript d3.js

我有一种方法可以根据fill中绘制的一堆圆的提供数据更新d3样式:

function updateFill(data) {
    nodes.style("fill", function(d) {
        var latest = data[d.id];
        if (latest === 1) {
            return "#000000";
        } else if (latest === 2) {
            return "#ffffff";
        } else if (latest === 3) {
            return "#d3d3d3";
        } else {
            // no data available, remove the current element/circle
        }
    }
}

我的问题是,我是否可以在最终的this.remove()子句中执行else(不返回任何内容)来删除d3图表中的圆圈?或者,我是否需要先为圆圈设置颜色,然后在nodes.style(...)之后使用某些选项将其删除,例如nodes.filter(function() { return this.style.fill == '#someColor'; }).data([]).exit().remove();

这里的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

这不是处理数据的D3方式,但原则上删除这样的元素没有问题。也就是说,您应该能够从您发布的函数中运行d3.select(this).remove()

但我建议重构代码,以便使用通常的输入/更新/退出模式识别要删除的元素。