jQuery:如何在代码中模拟拖放?

Tim*_*uri 21 jquery drag-and-drop jquery-ui draggable

编辑:这是一个链接,向您展示我的示例代码:http://www.singingeels.com/jqtest/

我有一个非常简单的页面,它引用了jquery-1.3.2.js,ui.core.js(最新版本)和ui.draggable.js(也是最新版本).

我有一个div,我可以很容易地拖动(当然使用鼠标):

<div id="myDiv">hello</div>
Run Code Online (Sandbox Code Playgroud)

然后在JavaScript中:

$("#myDiv").draggable();
Run Code Online (Sandbox Code Playgroud)

这是完美的.但是,我需要能够仅使用代码来模拟"拖放".我主要使用它,但问题是触发的事件是占位符事件.

如果你打开"ui.core.js"并滚动到底部......你会看到:

// These are placeholder methods, to be overriden by extending plugin
_mouseStart: function(event) { },
_mouseDrag: function(event) { },
_mouseStop: function(event) { },
_mouseCapture: function(event) { return true; }
Run Code Online (Sandbox Code Playgroud)

为什么在我的模拟中没有正确地扩展事件,但是当你用鼠标点击它们时,它们是? - 关于如何强制_mouseDrag:属性服从"ui.draggable.js"中的覆盖扩展的任何想法?

解决这个问题将是巨大的 - 我计划在以后展示主要的好处.

谢谢,-Timothy

编辑:这是一个链接,向您展示我的示例代码:http://www.singingeels.com/jqtest/

编辑2:点击上面的链接和查看源...你会看到我正在尝试做什么.这是一个片段:

$(document).ready(function() {
    var myDiv = $("#myDiv");

    myDiv.draggable();

    // This will set enough properties to simulate valid mouse options.
    $.ui.mouse.options = $.ui.mouse.defaults;

    var divOffset = myDiv.offset();

    // This will simulate clicking down on the div - works mostly.
    $.ui.mouse._mouseDown({
        target: myDiv,
        pageX: divOffset.left,
        pageY: divOffset.top,
        which: 1,

        preventDefault: function() { }
    });
});
Run Code Online (Sandbox Code Playgroud)

Stu*_*ser 29

在JQuery论坛中有一个关于它的问题.在撰写本文时尚未解决,但未来可能会有更多信息.


编辑:在论坛上回答:

我建议你使用simulate插件,这是jQuery UI用于拖放单元测试的:

https://github.com/jquery/jquery-ui/blob/master/external/jquery-simulate/jquery.simulate.js

您可以通过查看单元测试来查看使用示例

https://github.com/jquery/jquery-ui/blob/master/tests/unit/draggable/core.js

https://github.com/jquery/jquery-ui/blob/master/tests/unit/draggable/events.js

感谢rdworth.