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