少し遅れて、mouseleave イベントでプルダウン メニューを閉じたいと思います。しかし、私はそれを機能させるのに問題があります。
オブジェクトで次のメソッドを検討してください: (私は 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 を使用するメソッドが同じオブジェクト内の別のメソッドを呼び出し、オブジェクト内のプロパティにアクセスできるようにするにはどうすればよいですか?
よろしくお願いします。