下面的代碼將無法正常工作。我嘗試了不同的變化&到處搜索,但沒有運氣。jQuery中的setTimeout()問題。每個
i = 1;
var timer = new Array();
jQuery('a').each(function($) {
i++;
timer[i] = setTimeout(jQuery(this).remove(), i * 5000)
})
下面的代碼將無法正常工作。我嘗試了不同的變化&到處搜索,但沒有運氣。jQuery中的setTimeout()問題。每個
i = 1;
var timer = new Array();
jQuery('a').each(function($) {
i++;
timer[i] = setTimeout(jQuery(this).remove(), i * 5000)
})
裹刪除元素與功能
i = 1;
var timer = new Array();
jQuery('a').each(function($) {
i++;
var thiz = jQuery(this);
timer[i] = setTimeout(function() { thiz.remove(); }, i * 5000);
})
完美,謝謝。 – 2012-01-10 01:27:55
setTimeout
接受JavaScript語句不是jQuery(this).remove()
返回值:P 見this link
你可以function(){stuff}
,但不知道,當你希望它jQuery(this)
將被處理。
嘗試:
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<a href="#">a</a>
<a href="#">a</a>
<a href="#">a</a>
<a href="#">a</a>
<a href="#">a</a>
<a href="#">a</a>
<script>
i = 1;
var timer = new Array();
jQuery('a').each(function($) {
i++;
timer[i] = setTimeout(jQuery.proxy(function(){jQuery(this).remove();},this), i * 500);
})
</script>
</body>
</html>
菲利克斯已經暗示在評論這個問題,但我會擴大。
timer[i] = setTimeout(jQuery(this).remove(), i * 5000)
你的問題就在於,你是調用jQuery(this).remove()
並在此返回值傳遞給你的setTimeout
。假設是你打算在超時過期時運行它。如果是這種情況,您需要將其封裝在一個函數中,以便該函數將被傳遞給setTimeout
並在計時器到期時執行。
var $el = jQuery(this);
timer[i] = setTimeout(function(){
$el.remove()
}, i * 5000)
的第一個參數setTimeout
(或setInterval
)需要一個函數的引用(或字符串,但你不希望使用字符串形式)。
不是將函數作爲參數傳遞,而是調用函數並傳遞其結果。如果去掉括號,你會傳遞一個參考作用:
timer[i] = setTimeout(jQuery(this).remove, i * 5000)
但隨後你就會開始有與this
是在功能實際運行時間錯誤的事情煩惱。嘗試是這樣的:
var i = 1,
timer = [];
jQuery('a').each(function($) {
i++;
var $this = jQuery(this);
timer[i] = setTimeout(function() {$this.remove();}, i * 5000)
})
這需要的方式關閉的優勢工作在傳遞給setTimeout
匿名函數將在其運行,即使在$this
聲明的功能的時間訪問$this
變量將在那時完成執行。
請注意,最好聲明[]
而不是new Array()
。
另請注意,您將i
初始化爲1,然後在使用它之前對其進行增量,以使您添加到陣列中的第一個元素將爲timer[2]
。您可能應該將其初始化爲0,然後在設置每個計時器後遞增。
*下面的代碼將無法正常工作。*你想做什麼就做什麼?我假設你的問題是你立即調用'jQuery(this).remove()'。 – 2012-01-10 01:15:11
另請注意,傳遞給'each'的第一個參數實際上是所選元素集中DOM元素的索引。這意味着你不必維護一個單獨的計數器。 [文檔中的更多信息](http://api.jquery.com/each/)。 – 2012-01-10 01:43:32