2012-02-25 5 views
1

this을 jQuery 클릭 이벤트 핸들러에 어떻게 재정의 하시겠습니까? 나는 몇 년 전에 Edge에게 당신이 이것을 다른 것으로 묶기 위해 전달할 수있는 선택적인 매개 변수를 가지고 있었지만 더 이상 그렇지 않은 것으로 보았습니다.

+0

'this'를 다른 것으로 바인딩하고 이벤트 처리기에서 'this'를 재정의하는 것은 두 가지 다른 작업입니다. –

답변

3

일반적인 두 가지 방법이 있습니다. 나는 jQuery.proxy

$.fn.highlighter = function(){ 
    this.click($.proxy(function(){ 
     this.addClass('highlight'); 
    }, this)); 
}; 

다른 일반적인 대안은 당신이 클릭 핸들러를 호출 함수 내에서 selfthis을 할당하는 것입니다 사용하는 것을 선호합니다.

$.fn.highlighter = function(){ 
    var self = this; 
    this.click(function(){ 
     self.addClass('highlight'); 
    }); 
}; 
1

당신은 함수의 this 값을 설정 .bind()를 사용할 수 있습니다.

var clickHandler = function() { 
    // your click handler 
}; 

: 그리고

context이 (핸들러 내에서) 당신이 this에 바인딩 할 값입니다
$(stuff).on('click', clickHandler.bind(context)); 

.

참고 : 구형 브라우저에는 ES5-shim을 제공해야합니다.