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;

  }
}

'MyClass'インスタンスを持つPSグローバル変数またはインスタンスをデータに格納することは望ましくありません。

ありがとうございました!

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 に答える