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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/jquery/182410.html

猜你在找的jQuery相关文章