在jQuery UI Draggable延迟后启动拖动而不必移动鼠标?

ooo*_*aya 4 javascript jquery jquery-ui draggable

我有一个像这样的拖车:

$(".tab li").draggable({
    revert: true,
    delay: 1000,
    opacity: .75,
    helper: "clone",
    appendTo: "body"
})
.bind("dragstart", this.doSomething)
.bind("dragstop", this.undoSomething);
Run Code Online (Sandbox Code Playgroud)

因此,在按住鼠标一秒钟之后,可以开始拖动.只要您在1秒后移动鼠标,此工作正常.移动鼠标后,立即调度dragstart事件.即使你没有拖动鼠标,我想要的是'dragstart'在1秒后触发.

我知道我可以这样做:

.bind("mousedown", this.setSomeIntervalAndWait)
Run Code Online (Sandbox Code Playgroud)

但我需要访问作为draggable()的一部分创建的ui.draggable元素,因此mousedown/mouseup解决方案不会这样做.

这是否可以在不修改jQueryUI的情况下在延迟而不是鼠标移动时触发事件?我可以一起破解一些东西没有问题,使用超时,克隆对象,定位它并在'dragstart'上删除它但我希望有一些不那么复杂的东西.

小智 6

在最新的JQuery UI Draggable中,现在有一个延迟选项.看看演示