嗨,大家好我有一個函數,它接受this
作爲參數 - 'this
'引用的dom元素,點擊後應該運行一個函數。問題是我希望這個函數在稍微延遲後被調用,但是通過可變項this
不起作用,因爲函數執行時'this
'不會引用參數中傳入的對象,而是傳遞給窗口對象。在函數上執行setTimeout的問題 - 將此函數作爲參數傳遞
我該如何做到這一點?
嗨,大家好我有一個函數,它接受this
作爲參數 - 'this
'引用的dom元素,點擊後應該運行一個函數。問題是我希望這個函數在稍微延遲後被調用,但是通過可變項this
不起作用,因爲函數執行時'this
'不會引用參數中傳入的對象,而是傳遞給窗口對象。在函數上執行setTimeout的問題 - 將此函數作爲參數傳遞
我該如何做到這一點?
你可以捕捉this
:
var t = this;
window.setTimeout(function() {
// use the t variable here
}, 2000);
PrototypeJS增加了bind()方法Function.prototype的。此方法允許您將函數和參數綁定到特定對象的上下文。簡單地說,
window.setTimeout((function() {
alert(this);
}).bind(this), 2000);
最好的部分是,這種方法是目前ECMA-262規範,JavaScript是基於的一部分,本地實現正推出到現代瀏覽器。如果PrototypeJS尚未實現,它將只添加此方法。
我已經在http://jsfiddle.net/rLpbx/上設置了一個示例腳本。
我在這裏得到一個錯誤在螢火蟲 - 我的功能正在執行忽略超時和螢火蟲陳述它的一個無用的settimeoutcall堅持我把代碼報價:( – Ali 2010-08-22 11:22:24
@Ali:這似乎是一個奇怪的錯誤。你的問題與你有的代碼,我會看看它,看看有什麼問題。 – 2010-08-22 12:15:56