이것은 내 코드에서 어떤 일이 벌어지고 있는지에 대한 질문입니다. 그것은 작동하지만 약간의 깨달음이 필요합니다 ...자바 스크립트, jQuery 및 'this': 여기에 무슨 일이 있습니까?
텍스트 입력 요소에 이벤트 수신기를 만들려면 jQuery를 사용하고 있습니다. 다음과 같이 HTML은 단순히 다음과 같습니다
<input type="text" id="autocomplete" size="50" />
내가 누군가 유형의 해당 필드에 무엇인가, 그리고 피하기 위해 내가 타이머와 함께 이벤트 리스너를 설정 한 이벤트와 침수되는 때마다 이벤트를 수신 할 필요가 내 이벤트 있도록 사용자가 125 ms 동안 아무 것도 입력하지 않은 경우 리스너 코드는 실행 :
jQuery('#autocomplete').keyup(function(e) {
e.preventDefault();
clearTimeout(this.timer);
this.timer = setTimeout(function() {
jQuery.getJSON([URL goes here], function(data) {
// processing of returned data goes here.
}
}, 125);
console.log(this);
});
이 작동하지만, 나는 모든 일이 일어나고 이해한다면 아주 확실하지 않다. 위의 코드에서 알 수 있듯이 마지막 이벤트에서 생성 된 타이머의 ID
을 추적해야합니다. 나는 그것을 this.timer
에 저장함으로써 그렇게한다. 그러나이 경우 this
키워드는 입력 요소를 나타냅니다.
<input type="text" id="autocomplete" size="50" />
는 입력 요소에 타이머 ID
를 저장하기 위해 OK인가 :이 무엇 console.log
출력입니까? 내가 아는 한 모두, 나는 바보 같은 짓을 할 수있다. 이것은 "모범 사례"입니까, 아니면 다른 무엇인가?
답장을 보내 주셔서 감사합니다. – sbrattla