2011-02-07 88 views
1

我想使用每個函數,並在每次迭代的執行之間有一個暫停。具體來說,我希望腳本在新窗口中打開一堆URL,但是我希望在每個窗口之間有2秒的停頓時間。現在,每個鏈接都會在中間不停頓地打開。以下是我現在的代碼。我不知道如何使用delay()函數,因爲我沒有在延遲之後調用另一個jQuery效果。我也試過setTimeout無濟於事。我錯過了什麼?jquery每個延遲沒有影響

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

回答

6

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

40秒! ... – Raynos 2011-02-07 18:27:41