我希望有一個下拉菜單在短暫延遲後關閉它自己的鼠標事件。但是我無法正常工作。如何讓setTimeout在對象中執行一個方法?
考慮對象以下方法:(我使用jQuery)
myObj = {};
myObj.message = "woot!";
myObj.bindEvents = function() {
var that = this;
$("#menuPanel")
.bind("mouseleave", function() {
that.timer = setTimeout(that.closeMenu,500);
});
}
myObj.closeMenu = function() {
// close the menu
alert(this.message);
}
這是行不通的。也就是說,this.message出現未定義。經過一番挖掘,我明白了爲什麼。 :)'that'引用在執行時不可用於setTimeout內部的代碼。
我想知道,什麼是「最好」的方式來解決這種類型的問題?我怎麼能有一個方法,使用setTimeout調用另一個方法在同一個對象,並仍然有權訪問該對象的屬性?
在此先感謝您的幫助。
@Nick:問題中有jQuery。 – chelmertz 2010-02-21 13:09:05
是的,對不起,我忽略提及我正在使用jQuery。 – Travis 2010-02-21 13:10:37