0

jQueryを使用して、Javascript「クラス」の特定のインスタンスの「メソッド」にイベントをバインドしようとしています。要件は、イベント ハンドラーで "this" キーワードを使用して、最初にイベントをバインドしたインスタンスを参照できる必要があることです。

より詳細には、次のような「クラス」があるとします。

function Car(owner) {
  this.owner = owner;
}
Car.prototype = {
  drive: function() {
    alert("Driving "+this.owner+"s car!");
  }
}

そしてインスタンス:

var myCar = new Car("Bob");

たとえば、ボタンをクリックするたびに、車の「クラス」の myCar インスタンスでドライブの「メソッド」が呼び出されるように、イベントを車のドライブの「メソッド」にバインドしたいと考えています。

これまで、「メソッド」で「this」キーワードを使用してインスタンス メンバーに快適にアクセスできるクロージャを作成するために、次の関数を使用してきました。

function createHandler( obj, method ) {
  return function( event ) {
    return obj[method](event||window.event);
  }
}

私は次のようにそれを使用しました:

document.getElementById("myButton")
  .addEventListener("click", createHandler(myCar,"drive"));

JQueryでこのようなことを達成するにはどうすればよいですか?

私は具体的に「これ」を指定されたインスタンスに関連付けることについて質問しています。これは、私が自分で処理できる他のクラフトです。

4

2 に答える 2

3

匿名関数を使用するだけです:

$("#myButton").click(function() { myCar.drive(); });
于 2008-09-22T20:36:45.340 に答える
0

これを試して :

$("#myButton").each(function() {

var $btn = $(this);

    $btn.on('click',function(){

     // Do whatever you want.

    });
});

ここでは、最初にすべての #myButton 要素を対象とするループを作成します (例では間違っています。代わりに Class を使用する必要があります)。

$(".myButton").each(...

次に、クリック イベント ハンドラーをそれらすべてにアタッチします。

于 2015-10-08T06:03:07.757 に答える