2013-03-17 142 views
-2

我有一個元素填充了div「message」元素,並且如果有超過20個元素,我想讓它們淡入淡出(20)。動畫並執行動畫完成函數中的其餘代碼,但如果不超過20個元素,我想馬上執行剩餘的代碼,那麼邏輯怎麼看jquery?如果語句有問題

對不起noobish的問題,我不熟悉jquery。

編輯:這裏是我的代碼:

if ($(".info #future>center>div").length<20) {/*Skip straight to bunch of other code*/} 
$(".info #future>center>div").slice(20).animate({opacity:0}, 500, function() 
{ 
//Bunch of other code here 

現在,如果我只是用片20時,當有小於20周的div中的其他代碼的中心元素一羣永遠不會被執行。

+7

請您分享您的代碼嗎? – 2013-03-17 16:18:23

+0

添加了代碼,對不起,如果不夠清楚 – user2177393 2013-03-17 16:53:16

+0

發佈一個[完整的工作示例](http://sscce.org),它顯示您的問題行爲並將其與您觀察到的行爲進行比較。 (例如http://jsfiddle.net) – Zeta 2013-03-17 16:56:44

回答

1

您不能跳到其他地方定義的函數表達式中。您必須將其設爲獨立功能(即分配給兩個地方的可用變量),並將其作爲回調調用或將其傳遞:

function done() { 
    //Bunch of other code here 
} 
var divs = $(".info #future>center>div"); 
if (divs.length < 20) 
    done(); 
else 
    divs.slice(20).animate({opacity:0}, 500, done);