Jquery /javascript通过循环设置多个超时,一个接一个地独立运行
jquery/javascript set multiple timeouts one after the other via loop to run independently of the other
我试图动画一些div的向上滚动,但我希望一个在另一个之后暂停后向上滚动。现在我能想到的最好的就是
$('.curtain').each(function()
{
var $elem = $(this);
setTimeout(function()
{
$elem.animate({"height":0+'px'}, 2000);
}, 1000);
});
问题是他们仍然一起动画没有暂停。我怎么能这样做呢?div是动态生成的,可能有5 - 20个,所以做硬编码的逻辑是过时的,有什么想法吗?
function animateIt () {
var elems = $('.curtain').get();
(function next() {
if(elems.length){
var elem = $(elems.shift());
elem.animate({"height":0+'px'}, 2000, next);
}
})();
}
animateIt();
运行示例另一种方式是queue
function animateIt () {
var divs = $('.curtain');
divs.each( function(){
var elem = $(this);
$.queue(divs[0],"fun", function(next) { elem.animate({"height":0+'px'}, 2000, next); });
});
divs.eq(0).dequeue("fun");
}
看起来一个简单的递归函数可能在这里为您工作-
function doAnimation(elapsed){
var iterations = $('.curtain').length;
var current = elapsed+1;
if (current <= iterations){
setTimeout(function(){
$('.curtain:eq(' + elapsed + ')').animate(...);
doAnimation(current);
},50);
}
}
doAnimation(0);
下面是一个简单的示例
相关文章:
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 仅为一个窗体运行应用程序脚本
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- 如何使用特定的javascript函数创建一个url,以便在加载页面时运行
- 运行一个特定<脚本>(Dreamweaver)
- 如何运行在一个充满html的字符串中定义的javascript
- 运行“;非“;单击另一个函数中的函数仅一次
- 在触发x-editable之前运行一个函数
- jQuery:在for循环中运行youtube视频,播放最后一个视频
- 如何在另一个函数完成后运行
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 成功ajax:如果是200状态代码,则运行函数else另一个函数
- 为什么一个 $(document).ready(function() { 会阻止另一个运行
- 代码有什么问题?它给了我一个运行时错误
- 是否可以在node.js服务器上设置一个运行(服务器端)的socket.io客户端
- (JavaScript)不能一个接一个运行两个函数
- 需要帮助将vbs代码转换为jscript.我得到一个运行时错误类型不匹配
- 在我的网站上,我有一个非常慢的页面,在那里我可以找到一个运行良好的加载程序
- 在AngularJS 1.3.8中添加一个运行块