jquery каждую задержку без эффекта

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

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

person John C    schedule 07.02.2011    source источник


Ответы (1)


Вам нужно использовать параметр index метода .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);
});
person mVChr    schedule 07.02.2011
comment
+1 Мне понравился стиль, который вы использовали для ссылки на исходную документацию для .each(). думаю украду :) - person Ates Goral; 07.02.2011
comment
1. url должна быть локальной переменной 2. Параметр elem не используется, поэтому его указывать не нужно - person Šime Vidas; 07.02.2011
comment
@Raynos, нужно быть быстрым! @Ates, я украл это у jAndy. @ Симе, ответ скорректирован. - person mVChr; 07.02.2011
comment
Спасибо mVChr и всем остальным. 4 минуты на ответ. Ребята, вы делаете Stack Overflow потрясающим! - person John C; 07.02.2011