2017-09-04 70 views
1

我有這個代碼,它工作得很好,但我有這個偵聽器,檢測當你點擊按鈕,然後它應該停止所有的動畫,並開始新點擊按鈕jquery的停止/完成需要太長的時間來停止動畫

$(document).ready(function(){ 
var interval1,interval2,oref; 

interval1 = setInterval(function(){PureAnim("Pure");},1000); 

$("#Pure").click(function(){ 
    updateContent("index");}); 

$("#Comprar").click(function(){ 
    updateContent("Pacotes","Comprar");}); 

function updateContent(ref, botao = "Pure") 
{ 
     clearInterval(interval1); 
     $("#" + botao).finish(); //i've tried stop() here too 


     interval1 = setInterval(function(){PureAnim(botao);},500); 
     $("#mCont").load(ref + ".html #wauw"); 
} 

function PureAnim(ref){ 

     if($("#" + ref).css("opacity") == 1.0); 
     { 
      $("#" + ref).fadeTo(500, 0.0); 
     } 
     if($("#" + ref).css("opacity") == 0.0); 
     { 
      $("#" + ref).fadeTo(500, 1.0); 
     } 

} 
}); 

事情是,動畫實際上停止了,但經過了很大的延遲。 第一次單擊其他按鈕時,它立即停止,但在第一次後,它會停止一些PureAnim步驟。

我已經嘗試將.finish更改爲所有可能的.stop(),但都沒有投入工作。

我認爲這不是關於完成或加載函數,但更多的是如何處理這些動畫,我認爲這可能是因爲這一點。 Video of the error

+0

您是否嘗試過使用CSS動畫,而不是JS? –

+0

不,我爲什麼要? –

+0

您的'finish()'應用於錯誤的'botao'(它適用於* new *值,而不是您想要完成的) - 您需要存儲botao的值,以便您可以對其應用完成。 –

回答

0

請嘗試:

$("#" + botao).stop(true, true); 

$("#" + botao).stop(false, true); 
+0

不工作,因爲我說我已經試過停止() –