2012-12-02 71 views
1

我試圖打開一個網頁上的所有鏈接,當HREF包含某些文字,此刻我正在使用打開頁面上的所有鏈接與延遲

$('a[href*="/steve"]').each(function() { 
    window.open($(this).attr('href')); 
}); 

現在我的頁面使用包含與href中的文本有很多鏈接,所以它在很短的時間內使我打開窗戶,我想添加一個延遲,所以它有時間打開並等待大約5秒鐘,然後再打開下一個。我正在嘗試使用.delay,但無法正常工作,因爲我非常新,並且不知道在哪裏放置它。

回答

2

你可以這樣做:

$('a[href*="/steve"]').each(function(index) { 
    setTimeout(
     function(href){window.open(href)}, 
     (index+1)*5000, $(this).attr('href') 
    ); 
}); 

的想法是調用setTimeout與不斷增加的延遲。

+1

沒有必要使用一個變量。有一個'index'參數傳遞給'each'回調方法。使用乘以延遲.. –

+0

(* IE也不支持通過'setTimeout'傳遞參數給你函數*) –

+0

完全奏效了謝謝 –

2

使用的setTimeout添加延遲:

var i = 0; 
$('a[href*="/steve"]').each(function() { 
    ++i; 
    setTimeout(function(href) { window.open(href) },i*5000, $(this).attr("href")); 
}); 
+1

'setTimeout'函數作爲參數,'window.open'不返回一個.. –

+1

'setTimeout'在全局範圍內運行。所以'this'將指向'window'對象而不是'a'鏈接.. –

+0

感謝您指出問題 –