Получение экземпляра класса из обратного вызова jquery
Как получить экземпляр 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 ответ
Решение
Лучший вариант здесь (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) в этом нет необходимости, просто наличие другой ссылки для доступа к вашему классу так же просто и во многих случаях менее запутанно.