2012-01-07 67 views
1

我想通過jQuery創建一些隱藏對象, (一旦創建完成)slideDown()依次,逐個創建。 我不希望第二個對象等待第一個完成整個slideDown()的整個 ,但它需要一定的延遲。創建N個動畫對象

的(不工作)的代碼,我有如下:

$(document).ready(function() { 

     var i = 3; 

    var AnimFunc = function() { 

     $('#container').append('<div id="elem_' + i + '>' + i + '</div>').hide().slideDown(); 
     --i; 
     i == 0 ? clearInterval(startAnim) : null; // clear interval to prevent infinite loop 

    } 

    startAnim = setInterval(AnimFunc, 500); // 500 delay between slideDowns. 

}); 

我猜它甚至有可能需要一個do /,而沒有的setInterval和clearInterval。

我希望我的問題很清楚,有人可以幫助我。

感謝, Knal

+0

可以讓我就說:'如果(我=== 0) clearInterval(startAnim);'比三元運算符'更容易閱讀和輸入少? :'相當。 – nnnnnn 2012-01-07 11:11:02

回答

0

不知道我得到了你想要做的,但也許是這樣的:

var objectNumb = 10, 
    speed = 1500; 

$(document).ready(function() { 
    for (var i=objectNumb; i>=1; i--) { 
     $('#container').append('<div id="elem_'+i+'">'+i+'</div>').hide().delay(speed).slideDown(speed); 
    } 
}); 

FIDDLE

+0

@nnnnnn;謝謝,你是對的。對我來說,js就像一門外語;可以閱讀,但很難寫。謝謝! @ali youhannaei;感謝您的提高,我的一個草率的複製/粘貼/編輯。 @adeneo;搞定了!正是我需要的!謝謝。 謝謝大家,很好的幫助! – knalpiap 2012-01-07 23:42:57

+0

嗯,那種歡呼聲太早了!所有div在開始之前等待前一個完成動畫。我希望能夠(例如)將動畫製作成每格5秒,但是在之前的1秒後開始每個新的div。在實踐中,這意味着第#6號會在#1完成時開始。再次感謝你們! - – knalpiap 2012-01-08 00:27:29

+0

我希望這很清楚我的意思,我真的很喜歡這個解決方案的某些功能。 在此先感謝。 – knalpiap 2012-01-09 20:43:05

1

當你生成ID你加入我
使用後失去了雙引號這樣的: '+ I +'「

+0

+1只要打敗我吧。 – nnnnnn 2012-01-07 11:08:50