2009-08-07 14 views
6

"this"を呼び出しオブジェクトに正しくバインドするjQueryでコールバックを設定しようとしています。具体的には、ここで私が作業しているコードです。私はこのようなオブジェクトにはAJAX呼び出しをしています:"this"をjQueryコールバックにバインドする方法は?

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(); 
}); 
関連する問題