2012-10-12 28 views
0

我已經閱讀了很多主題和jQuery文檔,但仍然無法解決此問題。jQuery - 無法停止動畫和淡出/功能

我所擁有的是具有不透明度0和一些背景顏色的div。在某些按鈕的用戶「單擊」事件上,我稱之爲「StartAnimationFuncton」函數,該函數使不透明度爲1的div添加加載圖像。

然後,當從服務器接收到信息時,我會調用「StopAnimationFuncton」函數,它應該刪除加載div,然後再次使不透明度爲0的背景div。

注:我設置延遲(1000),在刪除它之前加載,因爲如果請求過快,加載顯示一毫秒並且看起來很醜。

//StartAnimationFuncton 
$("#BackGroundDiv").stop('fx',true,false).animate({opacity:1.0},1000,function(){ 
    $('#ShopperPortalLoadingDivContentTable').remove(); 
    $('<div id="Loading" style="width:100%;height:100%"></div>').hide().appendTo('#BackGroundDiv').stop('fx',true,false).fadeIn(500,function(){ 
     ... 
     //Waiting data from the server - when the date is call the StopAnimationFunction 
     ... 
    }); 
}); 

//StopAnimationFuncton 
$('#Loading').stop(true,false).delay(1000).fadeOut(500,function(){ 
    $(this).remove(); 
    $("#BackGroundDiv").stop(true,false).animate({opacity:0.0},1000,function(){ 
     ShopperPortal.Content.Functions.Render.InitializeRenderModeContainerAndLoadingEffects.Parameters.IsStopLoadingEffectActive=false; 
    }); 
}); 

我的問題是,當用戶點擊按鈕上的許多時間,當前的動畫不會停止。我嘗試了所有變體 - 對每個元素組合使用stop(),stop('fx',true,false),stop(true,true),stop(true,false),但沒有任何幫助。

哪種停止當前動畫和完整功能的正確方法?也。如果我的邏輯不正確,我會接受新的想法?

編輯1:我使用jQuery 1.8.2版本

EDID 2:我已閱讀,延遲(1000)可能會導致問題,因爲它不能被刪除/取消。

Jquery .delay().fadeOut cancel/clear queue.. Is it possible? How?

http://forum.jquery.com/topic/stop-does-not-clear-delay

這就是爲什麼我與動畫取代它({不透明度:1.0},1000),但什麼都沒有改變。

+0

對不起,我不能 - 通過我想展示我的邏輯的例子,我希望我犯了一些語法錯誤或者以不正確的方式使用了函數,所以有人可以糾正我。 – gotqn

回答

0

如果在同一元素上調用多個動畫方法,則後面的動畫將放置在元素的效果隊列中。

這些動畫直到第一個動畫完成纔會開始。
當調用.stop()時,隊列中的下一個動畫立即開始。

如果clearQueue參數的值爲true,那麼隊列中剩餘的動畫將被刪除並且不會運行。

+0

是的,那爲什麼我用stop('fx',true,false')但沒有任何改變 - 'fx'爲默認隊列,'true'爲刪除所有其他動畫,'false'爲不執行「complete」函數。 – gotqn