什么d3.select(this)返回?

Sac*_*lla 5 javascript svg d3.js

我有一个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 () {});
Run Code Online (Sandbox Code Playgroud)

显然,d3.select(this)不返回container,但它们是相似的(通过属性检查),但不完全相同.

为什么会这样?如何container在被调用的函数内访问?

Eth*_*ett 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
Run Code Online (Sandbox Code Playgroud)