我在mousedown、mouseup和mousemove上触发d3事件时遇到问题。当我将代码移动到生产服务器时,代码不起作用(否则它只需要一个简单的index.html和一个jquery和d3库就可以正常工作)。还有其他一些可拖动元素的库,它们与我在这里尝试完成的SVG和D3实现没有任何关系。我只是在想它们可能是与鼠标冲突事件的可能原因:(如有任何帮助,将不胜感激)
下面是我的代码(在生产环境之外运行良好):我试图在鼠标移动上画一条线:
var container = d3.select('svg');
function draw(selection){
var xy0,
path,
keep = false,
line = d3.svg.line()
.x(function(d){ return d[0]; })
.y(function(d){ return d[1]; });
selection
.on('mousedown', function(){
console.log("100")
console.log('THIS', this)
keep = true;
xy0 = d3.mouse(this);
console.log('xy0', xy0)
path = d3.select('svg')
.append('path')
.attr('d', line([xy0, xy0]))
.style({'stroke': 'red', 'stroke-width': '3px'});
console.log(path)
})
.on('mouseup', function(){
var xUp = d3.mouse(this);
console.log('xUp', xUp)
keep = false;
})
.on('mousemove', function(){
if (keep) {
Line = line([xy0, d3.mouse(this)
.map(function(x){ return x - 1; })]);
console.log(Line);
path.attr('d', Line);
}
var xMove = d3.mouse(this);
console.log('x', xMove[0]);
console.log('y', xMove[1]);
console.log('xMove', xMove)
});
}
d3.select('svg').call(draw);
这是HTML
<image xlink:href="dot.svg" x="7%" y="35%" height="20px" width="20px"></image>
<image xlink:href="dot.svg" x="36%" y="35%" height="20px" width="20px"></image>
<image xlink:href="dot.svg" x="65%" y="35%" height="20px" width="20px"></image>
<image xlink:href="dot.svg" x="7%" y="70%" height="20px" width="20px"></image>
<image xlink:href="dot.svg" x="36%" y="70%" height="20px" width="20px"></image>
<image xlink:href="dot.svg" x="65%" y="70%" height="20px" width="20px"></image>
</svg>
1条答案
按热度按时间bfnvny8b1#
解决了。在同一个视图中有一个可拖动的组件,当它被删除时,上面的问题就消失了。这让我想到,d3和jQuery的鼠标事件之间可能会产生冲突。