在短暂的延迟后,我想让一个下拉菜单在鼠标离开事件时自行关闭。但我无法让它工作。
考虑对象中的以下方法:(我正在使用 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 出现 undefined。经过一番挖掘,我明白了为什么。:) 执行时 setTimeout 内部的代码无法使用“那个”引用。
我想知道,解决此类问题的“最佳”方法是什么?如何让一个使用 setTimeout 的方法在同一个对象中调用另一个方法,并且仍然可以访问该对象中的属性?
在此先感谢您的帮助。