Frage

Ich versuche, ein Ereignis zu einer „Methode“ einer bestimmten Instanz eines Javascript „Klasse“ mit jQuery zu binden. Voraussetzung ist, dass ich in den Event-Handler der Lage sein sollte, die „dieses“ Schlüsselwort zu verwenden, um die Instanz zu verweisen ursprünglich ich das Ereignis gebunden.

Im Detail sagen, ich habe eine "Klasse" wie folgt:

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

Und ein Beispiel:

var myCar = new Car("Bob");

Ich mag jetzt ein Ereignis in das Laufwerk „Methode“ von meinem Auto binden, so dass, wann immer ich das Laufwerk „Methode“ eine Schaltfläche zum Beispiel klicken Sie auf der myCar Instanz der Car „Klasse“ bezeichnet.

Bis jetzt habe ich die folgende Funktion wurde mit einem Verschluss zu schaffen, die es mir erlaubt Instanz Mitglieder bequem Zugriff auf mit dem „dieses“ Schlüsselwort in meiner „Methoden“.

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

Ich habe es wie folgt:

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

Wie kann ich so etwas wie dies mit JQuery erreichen?

ich speziell bin gefragt über „das“ mit einer bestimmten Instanz assoziieren, die alle um die andere cruft ich alleine bewältigen kann.

War es hilfreich?

Lösung

Nur eine anonyme Funktion verwenden:

$("#myButton").click(function() { myCar.drive(); });

Andere Tipps

Versuchen Sie folgendes:

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

var $btn = $(this);

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

     // Do whatever you want.

    });
});

Hier erstellen Sie zunächst eine Schleife alle #myButton Elemente zum Ziel (die in Ihrem Beispiel falsch ist, sollten Sie Klasse verwenden statt) wie:

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

Dann legen wir den Click-Ereignishandler für alle von ihnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top