2013-08-22 63 views
2

请注意,目前没有专门的API将移除的元素添加回文档;但是,您可以将一个函数传递给selection.append或selection.insert以重新添加元素。在d3.js中重新添加移除的元素

https://github.com/mbostock/d3/wiki/Selections

什么是传递一个函数是什么意思?我不知道如何去实现这一点。我尝试传递一个函数,将删除的div附加到父级,但没有工作。有任何想法吗?

这是d3中的一个相对较新的功能。

+0

那你试试?你可以发布一些代码吗? – Yogesh

回答

4

a function that returns the DOM element to append

所以,你可以简单地这样做:

d3.select("body").append(function() { 
    return document.createElement("div"); 
}); 

而不是简单地使用字符串名称

d3.select("body").append("div"); 

当您使用D3选择的,记住他们不是单一的元素。他们是一群团体。因此,如果你说:

var divs = d3.select("div").remove(); // actually a multidimensional array 
var firstElement = divs[0][0]; // this can be appended by returning it 

相关文本从迈克:One nuance is that selections are grouped: rather than a one-dimensional array, each selection is an array of arrays of elements

下面是一个简单的工作fiddle to show a very basic example.

+0

谢谢,这是否意味着将属性应用于选择时,那么其所有子元素都获得相同的属性?例如'd3.selectAll(“path”)。attr(“visibility”,“hidden”)'会影响第二,第三等子组吗? – Isaac

+0

是的,那些适用于群体。我相信这个问题确实是'append'不允许你追加一个集合。数据驱动'输入'是更多的。 – Marc