2012-01-07 39 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