2013-11-25 56 views
2

我有一個.click()函數,它可以運行帶有動畫的各種函數。這些動畫取決於元素的當前位置,因此如果在上一次動畫運行之前第二次點擊該按鈕,它將略微關閉。如何確保.click()事件中的代碼在再次運行之前完成

比方說,我的代碼是這樣寫的:

$('.button').click(function() { 

    if (condition A) 
     ExecuteAnimation1; 
    else if (condition B) 
     ExecuteAnimation2; 

}); 

如何確保動畫功能調用之前完成?我會使用.queue()方法嗎?

謝謝。

+0

你看着他們的承諾?在你的動畫中使用它們是可行的。如果你粘貼一個你的動畫代碼的例子,那麼我可以給你一個完整的例子。 – agconti

+0

只要調用click事件,就可以解除綁定,然後在動畫完成後重新綁定它。 – j08691

+0

根據您對動畫的確切要求,您可以在動畫之前通過調用'.stop(true,true)'或類似名稱來實現您的目標:http://api.jquery.com/stop/ – Shai

回答

0

試試這個代碼

var IS_BUSY_ANIMATING = false; 

function start_animation() { 
    if (IS_BUSY_ANIMATING) { 
    setTimeout(startAnimation, 2000); //TRY after 2 seconds 
    } 

    IS_BUSY_ANIMATING = true; 

    if (condition A) 
    ExecuteAnimation1; 
    else if (condition B) 
    ExecuteAnimation2; 

    IS_BUSY_ANIMATING = false; 
} 

$('.button').click(start_animation); 
0

我會修改@blunderboy這樣的:

$(document).ready(function(){ 
    var animation_disabled = false; 
    $('.button').click(function() { 
    if(!animation_disabled){ 
     animation_disabled = true; 
     if (condition A) 
      ExecuteAnimation1; 
     else if (condition B) 
      ExecuteAnimation2; 
     animation_disabled = false; 
    } 
    }); 
}); 
相關問題