首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式调用jQuery UI可拖动拖动启动?

如何以编程方式调用jQuery UI可拖动拖动启动?
EN

Stack Overflow用户
提问于 2012-12-15 01:07:54
回答 5查看 25.8K关注 0票数 26

我在鼠标处于向下位置之后,松开鼠标之前,创建了一个新的jQuery元素。(鼠标按下后)。

我想使用jQuery UI以编程方式在新元素上触发dragging,这样它就会随着我的鼠标移动自动开始拖动。我不想在松开鼠标后再点击一次。

我已经尝试了以下几种方法。

代码语言:javascript
复制
var element = $("<div />");
element.appendTo("body").draggable().trigger("mousedown");

...however这不起作用。

有没有人对如何做到这一点有什么建议?

更新:在搜索this question的海报后也有同样的问题。然而,建议的解决方案归根结底是...

代码语言:javascript
复制
$("body").on("mousedown", function(e) { 
  $("<div />").draggable().appendTo("body").trigger(e);
});

...no不再适用于最新版本的jQuery和jQuery-UI,而是生成一个超过最大调用堆栈的错误。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-27 04:41:27

更新:

参见fuzzyBSc's answer below。这是正确的方法。

这完全是一个技巧,但它似乎做到了这一点:

代码语言:javascript
复制
  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

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

票数 4
EN

Stack Overflow用户

发布于 2014-07-02 13:27:53

draggable插件期望它的mousedown事件使用它的命名空间,并指向作为目标的draggable对象。在事件中修改这些字段适用于jQuery 1.8.3和jQuery UI 1.9.2。

代码语言:javascript
复制
$("body").on("mousedown", function(e) { 
  var div = $("<div />").draggable().appendTo("body");
  e.type = "mousedown.draggable";
  e.target = div[0];
  div.trigger(e);
});

演示:http://jsfiddle.net/maCmB/1/

票数 8
EN

Stack Overflow用户

发布于 2012-12-15 23:59:19

在鼠标悬停时创建可拖动函数

代码语言:javascript
复制
$('#futureDragableElement').mouseover(function() {
  $(this).draggable();
});

由于可拖动初始化已经完成,因此您的第一次鼠标单击将被考虑在内

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13883214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档