1

我有一个可以使用延迟事件处理程序的可插入元素。通过droppable拖动元素可展开节点。但是,我想添加一个延迟,以便节点不会立即展开,即在展开之前必须将可拖动对象拖放一秒以上。添加可延迟事件的延迟

droppable.over = function(event, ui) { 
    // expand node if dragover lasts 1000 milliseconds 
    node.expand(); 
}; 

我首先想到的是简单地在node.expand()使用setTimeout,但这并不能做我想做的,它只是延缓扩张的节点。它看起来并不像我可以设置的任何配置来实现这一点,所以我想知道我该怎么做。

+0

您可能会考虑让您设置的全局变量=超时,并具有鼠标熄灭取消setTimeout作业时的另一个功能。 – AceCorban 2012-08-02 22:18:50

+0

不确定您是否可以修改以下内容,以便在拖拽元素时检测用户是否悬停。 http://cherne.net/brian/resources/jquery.hoverIntent.html – 2012-08-02 22:24:22

回答

4

也许这样的事情?

var globalTimer; 

//.. 
droppable.over = function(event, ui) 
{ 
    globalTimer = setTimeout(function(){node.expand()}, 1000); 
}, 
droppable.out = function(event, ui) 
{ 
    clearTimeout(globalTimer); 
}; 
+0

谢谢,这似乎是最好的选择。 – 2012-08-03 13:53:40

0

尝试添加该setTimeout(function() { node.expand() }, 1000);

但我可能误解了你,你希望节点后出现或仅当它停留在可投放为1000毫秒出现?

+0

我试过这个,就像我在我的问题中所描述的那样,但这不是我正在寻找的行为。我只希望节点能够扩展,如果它可以在1000毫秒内丢弃。 – 2012-08-02 22:22:16