微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery-ui – 如何以编程方式调用jQuery UI可拖动拖动启动?

在鼠标处于向下位置并在释放之前,我创建一个新的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);
});

…不再适用于最新版本的jQuery和jQuery-UI,而是产生最大调用堆栈超出错误

解决方法

这完全是一个黑客,但它似乎是诀窍:
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);
    }
  });

Here’s the plunker

我的示例使用已经存在的元素,而不是创建一个元素,但它应该类似地工作。

原文地址:https://www.jb51.cc/jquery/182410.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐