2009-08-07 17 views
6

Sto provando a impostare un callback in jQuery che leghi correttamente "questo" all'oggetto chiamante. Nello specifico, ecco il codice con cui sto lavorando. Sto facendo una chiamata AJAX in un oggetto come questo:Come associare "questo" per i callback jQuery?

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

Tuttavia, in Object.prototype.doAjaxCall, this non fa riferimento alla cosa giusta. Ho già lavorato con Prototype e so che è necessario associarlo quando si fa la chiamata Ajax, ma non riesco a trovare il modo corretto di farlo in jQuery. Qualcuno può indicarmi la giusta direzione?

risposta

1

Una funzione di bind nativo più robusta dovrebbe far parte di ECMAScript 3.1. Nel frattempo ...

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

utilizzare la proprietà jQuery ajaxcontext di legare questo. es .:

$.ajax({ 
    context: this, 
    url: url, 
    type: 'GET' 
}).done(function(data, textStatus, jqXHR) { 
    this.handleAjaxResponse(); 
}); 
Problemi correlati