2011-05-09 6 views
1

이벤트를 등록하는 IE의 메커니즘이 클릭 된 실제 요소에 this 개체를 설정하지 않는다는 것을 ppk의 웹 사이트에서 방금 읽었습니다. 대신 글로벌 윈도우 객체를 참조합니다. below는 자신의 사이트에서 인용 :브라우저 간 이벤트 처리 및 jquery 지원

하지만 당신은 Microsoft 이벤트 등록 모델을 사용할 때이 키워드 는 HTML 요소를 참조하지 않습니다. 는 마이크로 소프트 모델의 currentTarget 같은 속성의 부족과 결합이 경우 현재 이벤트를 처리하는 HTML 요소 알 수

element1.attachEvent('onclick',doSomething) 
element2.attachEvent('onclick',doSomething) 

을 할 수 있다는 것을 의미한다. 이것은 마이크로 소프트 이벤트 등록 모델과 에 대한 가장 심각한 문제입니다. 그것은 결코 을 사용하지 않을 이유가 충분합니다. IE/Win에서만 적용됩니다. 응용 프로그램.

jQuery가 올바르게 처리합니다!

$(element).click(function(){...}); 

this이 문제의 요소를 참조 : 우리가 뭔가를 할 경우 의미한다. jquery는 IE 브라우저에서이 문제를 어떻게 처리합니까? 그것과 동등한 js 코드는 무엇이겠습니까?

답변

3

call 방법을 사용하여, 당신은 어떤 기능에 this의 값을 설정할 수 있습니다

var element = document.getElementById('testy'), 
    someFunction = function() { 
     alert(this.id); 
    }; 

someFunction.call(element); // alerts "testy" 

이 모든 라이브러리가 IE의 바보 "이"실수를 해결하는 방법을 거의이다 : 리스너에 래퍼를 추가하여 당신 패스하면 청취자가 실제로 called이됩니다.