我有一个奇怪的问题,enter()
选择无法检测现有元素。每次我调用enter()
时,它都会重新创建相同的元素,并且不会删除任何元素。
怎么了?
clusters = [
{ "clusternumber": 9, "value": "blah1"},
{ "clusternumber": 10, "value": "blah2"},
];
function redraw()
{
var cluster = clusterView.selectAll(".cluster")
.data(clusters, function(d) {return d.clusternumber; });
//
// Clusters entering the view
//
var clusterEnter = cluster.enter()
.insert("div", ".cluster");
//
// Clusters to update
//
var clusterUpdate = d3.transition(cluster)
.style("fill-opacity", 1);
//
// Clusters to remove
//
var clusterExit = d3.transition(cluster.exit())
.style("fill-opacity", 0)
.remove();
}
编辑:JSFiddle here:update()被调用两次,DOM对象生成两次。这一定是我忽略的简单!
编辑:http://maxhunter.me/clusterviewd3.html的完整代码如果您关心...
答案 0 :(得分:0)
原来这有点傻了:
.insert("div", ".cluster");
实际上并没有在班级cluster
中创建div。
替换为:
.insert("div")
.attr("class", "cluster")
解决了这个问题!