2009-08-07 33 views
6

Tôi đang cố gắng thiết lập một cuộc gọi lại trong jQuery liên kết chính xác "này" với đối tượng gọi. Cụ thể, đây là mã tôi đang làm việc. Tôi đang làm một cuộc gọi ajax trong một Object như thế này:Làm thế nào để ràng buộc "này" cho các cuộc gọi lại jQuery?

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

Tuy nhiên, trong Object.prototype.doAjaxCall, this không đề cập đến những điều đúng. Tôi đã làm việc với Prototype trước đây và tôi biết bạn cần phải ràng buộc điều này khi bạn thực hiện cuộc gọi Ajax, nhưng tôi dường như không thể tìm ra cách chính xác để làm điều đó trong jQuery. Ai đó có thể chỉ cho tôi đi đúng hướng?

Trả lời

1

Một hàm ràng buộc gốc, mạnh mẽ hơn sẽ là một phần của ECMAScript 3.1. Trong khi chờ đợi ...

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

Sử dụng jQuery ajaxcontext tài sản để ràng buộc này. ví dụ:

$.ajax({ 
    context: this, 
    url: url, 
    type: 'GET' 
}).done(function(data, textStatus, jqXHR) { 
    this.handleAjaxResponse(); 
}); 
Các vấn đề liên quan