我正在尝试创建一个循环函数,我发送单击元素的子元素以显示它。一切似乎都很好,直到点击它并到达cellSelection.enter().append("div");
节点似乎正确。当它转到append()
方法时,我不知道到底发生了什么。
这是一个工作示例: https://jsfiddle.net/festudillobernal/LghxxqLv/
编辑:
以下是相关代码:
d3.json(dataJson, function(error, data) {
display(dataJson);
function display(data) {
console.log(data);
var nodes = treemap.nodes(data);
var cellSelection = svg.selectAll(".cell").data(nodes);
var cellEnterSelection = cellSelection.enter().append("div")
.attr("class", "cell").on("click", zoomin);
cellEnterSelection.append("div")
.text(function(d) {
return d.name ? d.name : "";
});
cellSelection.transition().duration(250)
.call(cellUpdate);
cellSelection.exit().remove();
function zoomin(d) {
if (transitioning || !d) return;
transitioning = true;
var g2 = display(d);
var t1 = cellEnterSelection.transition().duration(750);
var t2 = g2.transition().duration(750);
}
return cellEnterSelection;
}
});
单击一个单元格并调用zoomin
函数时,它会再次调用display
方法,此步骤为:
var cellEnterSelection = cellSelection.enter().append("div")
.attr("class", "cell").on("click", zoomin);
因为它用空值填充divs
,我已经检查了cellSelection.enter().append("div")
的返回值,它是一个空数组,任何可能是什么原因的想法?