Получение экземпляра класса из обратного вызова jquery - PullRequest
4 голосов
/ 23 ноября 2010

Как получить экземпляр MyClass в обратном вызове из jquery.

function MyClass(){      

  this.message = 'Hello World'; // I need access to this variable in the callback

  //registering class member function as callback
  $('div').draggable({drag:this.onDrag});

  this.onDrag = function(event,ui){

   alert(this.message); // 'this' is jquery object, not MyClass instance;

  }
}

PS Глобальная переменная с экземпляром MyClass или сохранение экземпляра в данных нежелательна.вы!

1 Ответ

4 голосов
/ 23 ноября 2010

Лучший вариант здесь (IMO) - просто сохранить другую ссылку, я предпочитаю self, например:

function MyClass(){      
  var self = this;
  this.message = 'Hello World'; // I need access to this variable in the callback

  //registering class member function as callback
  $('div').draggable({drag:this.onDrag});

  this.onDrag = function(event,ui){    
    alert(self.message);
  }
}

Альтернатива заключается в том, чтобы связываться с контекстом другого плагина, который вы на самом деле не контролируете, когда (опять же, IMO) это на самом деле не нужно, просто наличие другой ссылки для доступа к вашему классу так же просто и во многих случаях менее запутанно.

...