2011-05-17 68 views

回答

1

剪切並粘貼從我的前面回答過類似的問題:

其實我創造一個「狀態」變量,以確保只有1動作可以發射在任何時間。

我做的是

set state = 0; when I initialise the page 
check if state == 0 when something is clicked 
if it's 0, then I set it to 1 (meaning something's happening) 
run the animation 
once the animation is complete, I reset the state to 0 

實際上,你只能觸發動畫的事件是狀態== 0,然後有沒有重疊。


因此,要回答你的問題,當您綁定()懸停,需要檢查是否是允許的火動畫或不基於狀態設置。

var hoverState = 0; 
$('.myLink').bind('mouseenter'), function(){ 
    myHoverCode(); 
}); 

function hoverCode(){ 
    if(hoverState == 0){ 
    hoverState = 1; // bind this hover state so we can't trigger it again 
    // do my animation 
    $('#someElement').animate({ 
},100, function(){ 
// animation complete 
hoverState = 0; // reset the hover state 
}); 
2

是的。您需要.stop()之前再.animate()http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup。否則,你建立一個需要出隊的動畫隊列。

+0

是否停止讓它完成序列或「銷燬」事件?如果它停止在軌道上,我仍然更喜歡我的「檢查狀態」答案,因爲它允許順序很好地完成。 – niggles 2011-05-17 07:35:59

+0

@niggles不完全確定。我只知道這就是我讀過的每個資源(主要來自Sitepoint,公平地說)如何去做。以下是API參考資料:[http://api.jquery.com/stop/](http://api.jquery.com/stop/) – 2011-05-17 07:42:50

+0

查看文檔,它停止了它的位置。我需要它的很多東西都必須到達終點,以便與設計一起工作,例如幻燈片放映在幻燈片中的正確圖像上。通過綁定縮略圖點擊大圖像條移動到它應該在的位置,但不會獲得多次點擊。 stop()會讓它完成一半。 – niggles 2011-05-17 07:49:51