在鼠标处于向下位置并在释放之前,我创建一个新的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); } });
我的示例使用已经存在的元素,而不是创建一个元素,但它应该类似地工作。
原文地址:https://www.jb51.cc/jquery/182410.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。