Javascript mouse(mySVG[0][0])真的是寻址容器的正确方法吗?
我使用D3js编写了一个小型原型,将操场包装成一个Javascript mouse(mySVG[0][0])真的是寻址容器的正确方法吗?,javascript,d3.js,reference,Javascript,D3.js,Reference,我使用D3js编写了一个小型原型,将操场包装成一个游戏对象: var Game = function(){ this.svg = d3.select( "body").append( "svg") .attr( "width", 500) .attr( "height", 500) ; _this = this; this.svg.on( 'click', function(){ _this.click()}); 要捕获SVG
游戏
对象:
var Game = function(){
this.svg = d3.select( "body").append( "svg")
.attr( "width", 500)
.attr( "height", 500)
;
_this = this;
this.svg.on( 'click', function(){ _this.click()});
要捕获SVG上的鼠标点击,我想使用D3的方法:
Game.prototype.click = function(){
var M = d3.mouse( this.svg[0][0]);
console.log( "Clicked: "+M[0]+':'+M[1]);
}
我真的怀疑我在实验后想到的this.svg[0][0]
,是否是本例中传递容器对象的预期方式
问题:在D3js中,将容器传递到
d3.mouse()
函数的正确方法是什么,该函数使用一个变量来保存元素?Upd。我自己明白了:做那件事。i、 e:
var M = d3.mouse( this.svg.node());
var M=d3。鼠标(这个)
应该可以工作;选中@FernOfTheAndes,在我的示例中,这是游戏
,在链接的示例中是窗口
。所以,不必了。要清楚,这个.svg[0][0]
是从单个元素d3选择访问DOM节点的一种完全可以接受的方式,它只会产生相当模糊的代码。因此,我倾向于选择更直观、可读性更强的selection.node()
。