짧은 지연 후 mouseleave 이벤트가 발생할 때 풀다운 메뉴를 닫고 싶습니다. 하지만 문제가 발생했습니다.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);
}
이 작동하지 않습니다. 즉,이 메시지는 정의되지 않은 것으로 나타납니다. 약간의 파기 후, 나는 그 이유를 이해한다. :) '해당'참조는 실행시 setTimeout 내부의 코드에서 사용할 수 없습니다.
이런 유형의 문제를 해결하는 "최선의"방법은 무엇입니까? 어떻게하면 setTimeout을 사용하는 메서드가 같은 개체의 다른 메서드를 호출 할 수 있고 개체의 속성에 계속 액세스 할 수 있습니까?
미리 도움을 주셔서 감사합니다.
@ 닉 : 질문에 jQuery가 있습니다. – chelmertz
예, 죄송합니다. jQuery를 사용하고 있음을 언급하지 않았습니다. – Travis