5

mousedown我想在 DOM 中注入一个新元素并立即开始拖动它(即 trigger dragstart),而无需再次单击新元素。

我在我的项目中经常使用 d3.js。但是我不知道我是否可以dragstart通过使用 d3 来触发事件,所以我尝试使用 jQuery:

$("circle#pen").trigger("dragstart");

但这不起作用。

这是一个jsFiddle的链接,我在其中通过尝试在 处创建“笔”来演示我的问题mousedown,如果用户拖动笔,它会画一条线。在dragend钢笔被移除和线消失。但是笔必须初始化,然后可以通过新的点击来拖动它。这只是为了演示问题。

这是一个与 jQuery 相关的问题,但没有很好的答案。

4

2 回答 2

2

我找到了一个名为jquery-simulate的 jQuery 库。通过使用它,我解决了这样的问题:

var coords = {  
    clientX : d3.event.x,
    clientY : d3.event.y
};

d3.select("g#selects").append("circle")
    .attr("id", "pen")
    .attr("r", 10)
    .attr("cx", coords.clientX)
    .attr("cy", coords.clientY)
    .call(dragPen);

$("circle#pen").simulate("mousedown", coords);

元素#pen现在被注入,只需单击一下即可启动拖动。如果您知道没有像query-simulate这样的库的解决方案,请告诉我。

于 2013-06-23T12:43:44.140 回答
0

我想你可能误解了 jQuery 的触发方法是如何工作的。它旨在触发您附加到事件的代码。它不会像用户输入那样触发某些事情发生。

因此,要解决您的问题,您需要将一些事件附加到元素上,这些事件将定义移动元素的逻辑。

于 2013-06-22T23:05:23.590 回答