在鼠标处于向下位置并在释放之前,我创建一个新的jQuery元素。 (mousedown之后)。
我想以编程方式触发使用jQuery UI拖动新元素,以便它会自动开始拖动鼠标移动。我不想要释放,然后再次单击鼠标。
我尝试过以下内容
var element = $("<div />"); element.appendTo("body").draggable().trigger("mousedown");
…但是这不行。
有没有人有任何建议如何实现这一点?
更新:经过一些搜索后,this question的海报有同样的问题。然而,建议的解决方案归结为…
$("body").on("mousedown",function(e) { $("<div />").draggable().appendTo("body").trigger(e); });
解决方法
这完全是一个黑客,但它似乎是诀窍:
var myDraggable = $('#mydraggable').draggable(); // Yeah... we're going to hack the widget var widget = myDraggable.data('ui-draggable'); var clickEvent = null; myDraggable.click(function(event){ if(!clickEvent){ widget._mouseStart(event); clickEvent = event; } else { widget._mouseUp(event); clickEvent = null; } }); $(document).mousemove(function(event){ console.log(event); if(clickEvent){ // We need to set this to our own clickEvent,otherwise // it won't position correctly. widget._mouseDownEvent = clickEvent; widget._mouseMove(event); } });
我的示例使用已经存在的元素,而不是创建一个元素,但它应该类似地工作。