Domanda

Sto cercando di associare un evento a un "metodo" di un'istanza particolare di una classe "quotata" di Javascript usando jQuery. Il requisito è che io nel gestore dell'evento dovrei essere in grado di utilizzare il "questo" parola chiave per fare riferimento all'istanza a cui inizialmente ho associato l'evento.

Più in dettaglio, supponiamo che io abbia una "classe" come segue:

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

E un'istanza:

var myCar = new Car("Bob");

Ora voglio associare un evento all'azionamento "metodo" della mia auto in modo che ogni volta che faccio clic su un pulsante, ad esempio il metodo "drive", viene chiamato sull'istanza myCar della classe "Auto".

Fino ad ora ho usato la seguente funzione per creare una chiusura che mi consente di accedere comodamente ai membri dell'istanza usando " questo " parola chiave nei miei metodi "quotati".

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

L'ho usato come segue:

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

Come realizzo qualcosa del genere con JQuery?

Chiedo in particolare di associare " questo " con un'istanza designata, l'altra cruft tutt'intorno che posso gestire da sola.

È stato utile?

Soluzione

Usa solo una funzione anonima:

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

Altri suggerimenti

Prova questo:

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

var $btn = $(this);

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

     // Do whatever you want.

    });
});

Qui devi prima creare un ciclo per indirizzare tutti gli elementi #myButton (che è sbagliato nel tuo esempio, dovresti invece usare Class) come:

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

Quindi alleghiamo il gestore di eventi click a tutti loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top