使用D3嵌套选择输入()和exit()

时间:2014-03-17 00:04:37

标签: javascript d3.js

我对this问题提出了一个后续问题,我已经太仓促地关闭了。

我如何/在哪里放置.exit().transition()的答案?在我的原始代码中,我将主图表保存在变量(questions_chart)中,因此我可以说questions_chart.exit().remove()之类的内容。但是,如果我将.exit().remove()放在.text()(彼得答案的代码中的最后一行)之后,我会收到错误消息object array has no method 'exit'

1 个答案:

答案 0 :(得分:1)

我没有对此进行过测试,但会给它一个镜头......你需要保留变量绑定数据......就像这样:

var divs = d3.select("body").selectAll("div")
    .data(data.questions);

divs
    .enter().append("div") // this creates the question divs
    .text(function(d) { return d.value; })
    .selectAll("div")
    .data(function(d) { return d.answers; })
    .enter().append("div") // this creates the nested answer divs
    .text(function(d) { return d.value; });

divs.exit().remove();

我假设您不需要仅删除作为答案的div。希望这会有所帮助。

更新:尝试处理问题和答案......

var divs = d3.select("body").selectAll("div")
    .data(data.questions);

var questionDivs = divs
    .enter().append("div") // this creates the question divs
    .text(function(d) { return d.value; });

divs.exit().remove();

var answerDivs = questionDivs
    .selectAll("div")
    .data(function(d) { return d.answers; });

answerDivs
    .enter().append("div") // this creates the nested answer divs
    .text(function(d) { return d.value; });

answerDivs.exit().remove();