2009-08-07 3 views
6

"this"를 호출 객체에 올바르게 바인딩하는 jQuery에서 콜백을 설정하려고합니다. 특히, 여기에 내가 작업하고있는 코드가있다. 나는이 같은 객체에 아약스 전화를하고있는 중이 야 :jQuery 콜백에 "this"를 바인딩하는 방법은 무엇입니까?

Object.prototype.doAjaxCall = function(url) 
    { 
     $.get(url, null, this.handleAjaxResponse); 
    } 

그러나 Object.prototype.doAjaxCall에, this 올바른 일을 참조하지 않습니다. Prototype을 사용하기 전에 Ajax 호출을 할 때 이것을 바인딩해야한다는 것을 알았지 만 jQuery에서 올바른 방법을 찾지 못하는 것 같습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

답변

1

보다 강력하고 네이티브 인 바인드 함수는 ECMAScript 3.1의 일부 여야합니다. 한편 ...

Object.prototype.doAjaxCall = function(url) { 
    var bind = function(context, method) { 
     return function() { 
      return method.apply(context, arguments); 
     }; 
    }; 

    $.get(url, null, bind(this, this.handleAjaxResponse)); 
}; 
2

이 결합하는 jQuery ajaxcontext 속성을 사용합니다. 예 :

$.ajax({ 
    context: this, 
    url: url, 
    type: 'GET' 
}).done(function(data, textStatus, jqXHR) { 
    this.handleAjaxResponse(); 
}); 
관련 문제