什么d3.select(this)返回?

时间:2016-09-21 04:06:52

标签: javascript d3.js svg

我有一个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

1 个答案:

答案 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