3

次のような状況があります。疑似クラスのコンストラクターで、クリック イベントを要素にアタッチします。イベントがトリガーされたら、コールバック関数からイベントが設定されたオブジェクトを参照したいと思います。

擬似クラス コンストラクターのコード

function MyClass(){
  this.myClassAttribute = "A class attribute";

  // here `this` refers to the object

  $("span").click(function(){
    // here `this` refer to a matched element, i.e. "span"
    // How to get the value of `myClassAttribute`?
  });

}

グローバル変数なしでオブジェクトを参照するには?

4

3 に答える 3

14

Javascript では、匿名関数は、関数の作成のスコープに存在するすべての変数を参照できます。はコールバック関数で再割り当てされるためthis、コールバックに入る前にローカル変数を作成して格納できます。

function MyClass(){
  this.myClassAttribute = "A class attribute";
  var myClass = this;

  $("span").click(function(){
    myClass.myClassAttribute = "hello";
  });

}
于 2009-10-16T18:39:55.967 に答える
8

これは、jQuery API でより適切に文書化されています。jQueryバインド

$.click は $.bind('click', / no data /, callback)の単なるショートカットです

$('span').bind('click', { parentObj: this }, function(e) {
  var parentObj = e.data.parentObj;
  // the rest of your code goes here
}

これが役立つことを願っています!

于 2009-10-16T18:43:54.760 に答える