JQuery каждую задержку без эффекта - PullRequest
1 голос
/ 07 февраля 2011

Я пытаюсь использовать каждую функцию и делаю паузу между выполнением каждой итерации. В частности, я хочу, чтобы скрипт открывал несколько URL в новых окнах, но я хочу, чтобы между каждым открытием окна была пауза в 2 секунды. Прямо сейчас каждая из ссылок открывается без перерыва между ними. Ниже мой код прямо сейчас. Я не знаю, как использовать функцию delay (), так как я не вызываю другой эффект jQuery после задержки. Я также пробовал setTimeout безрезультатно. Чего мне не хватает?

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

1 Ответ

6 голосов
/ 07 февраля 2011

Вам необходимо использовать индексный параметр метода .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);
});
...