2010-02-03 88 views
0

我正在使用jQuery超級手勢,http://www.evanbot.com/article/super-gestures-jquery-plugin/22,爲網站上的接口。jquery鼠標手勢/ btn排隊

我想每個手勢我用有一系列的分配給它的動作如:

  • 當一個動作(比如移動鼠標向左)是由它在一個div淡出用戶執行用一個漂亮的圖形提示用戶做其他事情

  • 當執行相同的動作時,它會在不同的div中淡入,忘記它爲該動作執行的最後一個動作。

這可以一直持續下去,直到它用完特定動作的動作。然後,我將這個應用到整個系列的上下,左,右,圓,之字形等鼠標移動

我的問題是,我如何讓jQuery通過這種方式的一系列動作?

非常感謝提前。

+0

所以你想把同一事件關聯到一系列的動作?對於每次調用該事件,該操作都會被取出並執行?你是否需要做一些更復雜的事情,比將某些執行函數的動作放到列表中並將這些事件調用轉發給手勢回調函數中的這些函數? – 2010-02-03 08:36:28

+0

@Aleksi本質上是的。我最終希望以某種方式記錄用戶執行的操作/功能,並讓jquery記住這些數據,以便界面可以調用以前的操作並顯得更加智能。但現在我想學習如何實現上述目標,希望這是相對的。我感謝幫助! – mtwallet 2010-02-03 10:01:05

回答

0

您可以使用JavaScript數組來保存的動作隊列來執行

var queue = []; 

queue.push(function() { 
    alert('hello world') 
}); 
queue.push(function() { 
    alert('goodbye cruel world'); 
}); 

然後,當執行手勢,你可以使用

... 
callback: function(gesture) { 
    if(0 == queue.length) { 
     ... 
    } else if('circle-clockwise' == gesture) { 
     var fn = queue.shift(); // get the first element in queue 
     fn(); 
    } 
    ... 
} 
... 

調用隊列中的下一個動作。

注意:您可以將函數調用編寫爲queue.shift()();以及如果你想縮短。

+0

謝謝Aleksi我會盡力解決這個問題。 – mtwallet 2010-02-03 11:58:10