4

如何在 jquery 的回调中获取“MyClass”实例。

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”实例的全局变量或将实例存储到数据中是不可取的。

谢谢!

4

1 回答 1

4

这里最好的选择(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)它不是真的有必要,在许多情况下,只要有另一个引用来访问你的类就同样容易而且不那么混乱。

于 2010-11-23T09:28:55.640 回答