【问题标题】:jquery each delay without effectjquery每次延迟无效
【发布时间】:2011-06-22 22:25:10
【问题描述】:

我正在尝试使用 each 函数并在每次迭代的执行之间暂停。具体来说,我希望脚本在新窗口中打开一堆 URL,但我希望在每个窗口打开之间有 2 秒的暂停。现在,每个链接都打开,中间没有停顿。下面是我现在的代码。我不知道如何使用 delay() 函数,因为我没有在延迟之后调用另一个 jQuery 效果。我也试过 setTimeout 无济于事。我错过了什么?

    $('.url').each(function() {
        url = $(this).attr("href");
        window.open('http://www.google.com' + url);
    });

【问题讨论】:

    标签: jquery delay settimeout each


    【解决方案1】:

    您需要使用.each()DOCS 方法的索引参数,以便将您的setTimeout 延迟乘以项目的索引。这是因为每个循环中的迭代都是立即处理的,因此您基本上将设置延迟为 0、2000、4000、6000 等:

    $('.url').each(function(i) {
        var url = $(this).attr("href");
        setTimeout(function() {
          window.open('http://www.google.com' + url);
        }, 2000*i);
    });
    

    【讨论】:

    • +1 我喜欢你用来链接到.each() 的原始文档的风格。我想我会偷它:)
    • 1. url应该是局部变量 2.elem参数没有用到,所以不需要指定
    • @Raynos,得快点! @Ates,我从 jAndy 那里偷来的。 @Sime,答案已调整。
    • 感谢 mVChr 和其他所有人。 4分钟回复。你们让 Stack Overflow 很棒!
    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多