首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟不延迟for循环

延迟不延迟for循环
EN

Stack Overflow用户
提问于 2014-01-30 02:20:57
回答 2查看 67关注 0票数 0

我有一个弹出窗口,我想每次显示不同的信息。相反,.html() jQuery首先运行,我看到的只是最后一个数组项。

代码语言:javascript
复制
$(document).ready(function () {

var popArray = ["App1","app2","app3","app4","app5","app6","app7","app9","app10"];

for ( var i = 0; i < popArray.length; i++ ) {

$('.site-footer h2').html(popArray[i]);
$('.site-footer').delay(1000).slideUp(300).delay(1000).slideDown(300);

}
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-30 02:24:37

这里的主要问题是您正在更新循环中的html,并且动画是异步的,所以首先执行循环,然后动画开始,这意味着在动画启动时,h2将数组中的最后一个项作为其内容。

代码语言:javascript
复制
var popArray = ["App1", "app2", "app3", "app4", "app5", "app6", "app7", "app9", "app10"];
$.each(popArray, function (i, v) {
    $('.site-footer').queue(function () {
        $(this).find('h2').html(popArray[i]);
        $(this).dequeue()
    }).delay(1000).slideUp(300).delay(1000).slideDown(300);
})

演示:小提琴

票数 2
EN

Stack Overflow用户

发布于 2014-01-30 02:27:25

我想你需要setTimeout

代码语言:javascript
复制
$(document).ready(function () {
    var popArray = ["App1","app2","app3","app4","app5","app6","app7","app9","app10"];

    for (var i = 0; i < popArray.length; i++ ) {
        setTimeout(function() {
            $('.site-footer h2').html(popArray[i]);
            $('.site-footer').slideUp(300).delay(1000).slideDown(300);
        }, i * 1000);
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21446661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档