2013-11-27 30 views
0

我正在做這樣的事情在如何檢查是否有任何未決的動畫是有jQuery的FX隊列

$("somethreedivs").animate(

    { //move the three divs to the left},1000 


).promise().done(function() 
    { 
     //hide the leftmost div 
     //introduce a new div in the right 


    }); 

我想上面指定的動畫之前檢查「如果任何動畫是不完整的,不嘗試執行指定的效果」

if("what condition to be given here/how to check the animation queue"){ 
    return; 
} 

我想上面的‘如果檢查’之前我生命的代碼放,以避免 動畫如有動畫懸而未決。整個想法是一個新的動畫效果 只有在前面的動畫效果是 完成時纔會觸發。從指定「queue:false」我知道任何新的動畫觸發不會等待先前的動畫完成,那不是我的場景。

+0

不能確定你在這裏做了什麼,但你可以實際'.animate內調用一個函數(函數(){ //完成效果})。promise()。done(function(){// do something else});' –

+0

此外,您可以將它放入函數中並在動畫完成後遞歸執行每個動畫。我將需要確切地知道你打算做什麼動畫......你一次給動畫1格(向左)嗎?你不希望div在同一時間動畫?如果是這樣,我們可以將元素索引作爲參數傳遞給函數,並將其用於動畫。需要看看DOM是如何設置的。 –

回答

1

嘗試:

if($(":animated").length) 
+0

謝謝,我從來沒有想過會這麼簡單。 Jquery嘗試「少寫,多寫」 – MeanMan

0

用途:

if($(somethreedivs).is(':animated').length>0){ 
    //return from here 
    } 
$("somethreedivs").animate(

{ //move the three divs to the left},1000 

).promise().done(function() 
{ 

    //hide the leftmost div 
    //introduce a new div in the right 
}); 
+0

我希望支票在動畫效果之前。你的檢查邏輯在回調方法中。感謝回覆。 – MeanMan

+0

@Livejava:現在更新 –

+0

,如果條件總是返回true。您檢查animate方法本身內是否存在任何動畫元素。 – MeanMan

相關問題