Javascript D3带水平/垂直锁定的x轴和y轴上的拖动圆

Javascript D3带水平/垂直锁定的x轴和y轴上的拖动圆,javascript,jquery,css,d3.js,Javascript,Jquery,Css,D3.js,我试图沿x轴和y轴拖动一个圆,但带有锁(在同一拖动事件中不允许对角拖动)。我试图通过绘制两个垂直的矩形来实现这一点,并测试鼠标是否在其中一个矩形内,但它无法工作,因为它开始四处跳跃,并且没有正确锁定,并且交叉区域也存在问题。以前有没有人遇到过这个问题,并且对如何实现我的目标有什么想法?提前非常感谢 代码 下面是一个jsfiddle来更好地说明我想要实现的目标: 基本上,在拖动事件期间,应只允许圆在两个矩形内移动 这里有一个JSFIDLE来更好地说明我想要实现的目标:基本上,在拖动事件中,圆圈应

我试图沿x轴和y轴拖动一个圆,但带有锁(在同一拖动事件中不允许对角拖动)。我试图通过绘制两个垂直的矩形来实现这一点,并测试鼠标是否在其中一个矩形内,但它无法工作,因为它开始四处跳跃,并且没有正确锁定,并且交叉区域也存在问题。以前有没有人遇到过这个问题,并且对如何实现我的目标有什么想法?提前非常感谢

代码


下面是一个jsfiddle来更好地说明我想要实现的目标:


基本上,在拖动事件期间,应只允许圆在两个矩形内移动

这里有一个JSFIDLE来更好地说明我想要实现的目标:基本上,在拖动事件中,圆圈应该只允许在两个矩形内移动。我已经在问题中添加了您的评论。您可能应该在编写拖动函数时显示出一些实际的努力。Stack通常不喜欢人们发布问题并要求他们为其编写代码。我不希望其他人为我编写代码,而是想知道周围是否有人卷入此类问题,以及他们是如何解决的。发布的代码更清楚地说明了我在做什么。好吧,如果你想了解一些理论的话。。。
var svg = d3.select("body").append("svg")
    .attr("width", 200)
    .attr("height", 200)

var circle = svg.append("circle")
    .attr("cx", 100)
    .attr("cy", 100)
    .attr("r", 15)
    .style("fill", "purple");

var rectH = svg.insert('rect', 'circle')
    .attr('x', 85)
    .attr('y', 0)
    .attr('width', 30)
    .attr('height', 200)
    .attr('fill-opacity', 0.25)

var rectV = svg.insert('rect', 'circle')
    .attr('x', 0)
    .attr('y', 85)
    .attr('width', 200)
    .attr('height', 30)
    .attr('fill-opacity', 0.25)

circle.call(d3.behavior.drag()
     .on('drag', function(d) {
           //  
     })
)