Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery UI Dragable中延迟后启动拖动,而无需移动鼠标?_Javascript_Jquery_Jquery Ui_Draggable - Fatal编程技术网

Javascript 在jQuery UI Dragable中延迟后启动拖动,而无需移动鼠标?

Javascript 在jQuery UI Dragable中延迟后启动拖动,而无需移动鼠标?,javascript,jquery,jquery-ui,draggable,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); 因此,在按住鼠标一秒钟后,可以开始拖动。只要在1秒后移动鼠标,此操作就可以正

我有一个像这样的拖鞋:

$(".tab li").draggable({
    revert: true,
    delay: 1000,
    opacity: .75,
    helper: "clone",
    appendTo: "body"
})
.bind("dragstart", this.doSomething)
.bind("dragstop", this.undoSomething);
因此,在按住鼠标一秒钟后,可以开始拖动。只要在1秒后移动鼠标,此操作就可以正常工作。移动鼠标后,dragstart事件会立即按原样调度。我想要的是“dragstart”在1秒后触发,即使您不拖动鼠标

我知道我可以做到这一点:

.bind("mousedown", this.setSomeIntervalAndWait)
但是我需要访问ui.draggable元素,该元素是作为draggable()的一部分创建的,因此mousedown/mouseup解决方案无法执行


在不修改jQueryUI以在延迟而不是鼠标移动时触发事件的情况下,这是可能的吗?我可以通过超时、克隆对象、定位对象并在“dragstart”上删除它来拼凑一些东西,没有问题,但我希望能有一些不那么复杂的东西。

答案是否定的。JQuery UI的可拖动交互不支持这一点,所以您需要修改JQuery UI,或者做一些您已经暗示过的事情。我会选择后一种,除非你知道这是你经常重复使用的东西。我想说,实现类似功能的最佳方法是使用(1.7之前)或(1.7之后)在JQuery中实现自定义事件处理程序。您甚至可以实现自己的little,它实现了
draggable
,但需要添加事件


如果您想了解更多详细信息,或者想了解如何编写此类插件的示例,请告诉我。

在最新的JQuery UI Draggable中,现在有一个选项。查看要启动dragstart的

,即使用户没有拖动?这没有多大意义。在这种情况下,拖动已开始,因为它们已满足延迟标准,但您当然会比我更了解我的应用程序,不是吗?如果您没有建设性的答案,请不要浪费您的时间、我的时间以及以后可能会有相同问题的人的时间。我想问的是,使用这个新的dragstart功能,您试图实现的目标是什么?也许有一个更简单的方法你没有想到。基本上,我需要一个“Dragrady”活动。这告诉我,好的,你已经满足了延迟标准,如果鼠标移动,我们就可以拖动了。我需要做的是创建一个克隆来表示“我们要走了”,即使他们不动。如果他们什么也没做就放了,那没关系——只做dragend,其余的就自己处理。真是个好问题,就像我刚才想的一样。我认为如果您使用
delay
让事件通知您元素已准备好拖动,那将非常好。例如,您可以更改元素的颜色。看(^^)~>是的-好的。我就是这么想的。我想这是最好的了。我不认为它会经常被重用,所以我只想加入一些额外的事件来模拟“Dragrady”。