我有一个svg组,我称之为拖动功能。
var container=d3.select("#id");
container.call(dragcontainer);
var dragcontainer = d3.drag()
.on("start", function () {})
.on("drag", function (d, i) {
//(d3.select(this)).select("rect");
})
.on("end", function () {});
显然,d3.select(this)
不返回container
,但它们相似(通过属性检查),但不完全相同。
为什么会这样?如何在被调用函数中访问container
?
答案 0 :(得分:8)
注释有些重复,但原因是d3.select
返回d3选择。即使您选择相同的DOM节点,每个选择都是不同的对象。以下显示了不同之处:
var container = d3.select("body").node();
var sel1 = d3.select(container);
var sel2 = d3.select(container);
console.log(sel1 === sel2); // false
console.log(sel1.node() === sel2.node()); // true