2014-05-08 77 views
0

我想將代碼應用到一系列匹配的元素,每個元素之間有一個延遲。我不明白爲什麼下面的代碼不工作:setTimeout()函數在jQuery中不起作用每個()函數

 jQuery(".myElement").each(function() { 
      setTimeout(function() { 
       jQuery(this).remove(); 
      }, 1000); 
     }); 

我知道有許多人問類似的問題,但答案還沒有爲我工作。我明白,這段代碼同時將延遲應用到每個匹配元素,這不是我想要的。但我仍然無法弄清楚如何使它工作。

+0

可能重複(http://stackoverflow.com/questions/5202403/how-to-add-pause-between-each-iteration-of-jquery-each)和[如何在回調中訪問正確的this/context](http://stackoverflow.com/q/20279484/218196)。 –

回答

2

無需.each

setTimeout(function() { 
    jQuery(".myElement").remove(); 
}, 1000); 

的原因,現在的工作是因爲this不再是指元素each - 你可以設置一個情境變量,但因爲你只是刪除元素呢,一舉成功!

+0

你可能會解釋爲什麼OP沒有工作。 – jfriend00

0

JSBIN DEMO

你的問題就在於,你正在調用的jQuery(這)一個.remove()和這個返回值傳遞給您的setTimeout。假設是你打算在超時過期時運行它。如果是這樣的話,你需要將它封裝在一個函數中,這樣函數將被傳遞給setTimeout並在定時器到期時執行。

jQuery('.myElement').each(function() { 
    var thiz = jQuery(this); 
    setTimeout(function() { thiz.remove(); }, 1000); 
}) 
0

感謝您的回答。無論出於何種原因,我都無法讓他們中的任何一個人工作。該代碼,但是,最終做的工作對我來說:[?如何jQuery的。每()的每次迭代之間添加暫停]

jQuery(".element").each(function(e) { 
    var element = jQuery(this); 
    setTimeout(function() { 
     jQuery(element).remove(); 
    }, e*1000); 
});