jquery每次延迟没有效果

标签 jquery delay settimeout each

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

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

最佳答案

您需要使用.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);
});

关于jquery每次延迟没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924922/

相关文章:

javascript - 如何从html中提取一些<li>(在ol/ul标签下)标签

javascript - 如何定位交替的奇数/偶数文本行

javascript - 按键保持延迟。 JavaScript

c# - 为什么我的 "yield"不工作?

在 setTimeout 中调用 Javascript 函数 - 哪个更好?

jquery - MVC Razor 部分 View 中 webGrid.GetHtml 的分页

javascript - jQuery scrollTop 有问题

javascript - 如何使用 javascript 在定义的时间延迟后动态更改 <p> 标记数据?

setTimeout/setInterval 的 Javascript 循环问题

javascript - ClearTimeout 不能很好地工作(可能是在第一次定时器触发之前清除时)