Dans JQuery Un événement Binding de Hadler est l'événement générant l'élément DOM (ce point à l'élément DOM).
Dans le prototype de modification de la liaison d'un gestionnaire d'événements, on peut utiliser le BindaseventListener fonction;
Comment puis-je accéder à la fois à l'instance et à l'élément DOM d'un gestionnaire d'événements?
Semblable à Comment puis-je lier un événement gestionnaire à une instance de jQuery?
4 Réponses :
La valeur Ce code> signalait autrement (c'est-à-dire l'élément que le gestionnaire est attaché à) est également transmis dans la propriété
courantTarget code> de l'objet événement. Donc, si vous utilisez la fonction de liaison, vous avez parlé de:
Car.prototype.drive = function(e) {
// this will be your car object
// e.currentTarget will be the element that you attached the click handler to
}
Je ne peux pas utiliser BindaseventListener code> comme par prototype.
OK Ici vous êtes:
var car = {km:0}; $("#sprint").click(function(){ car.km += 10; $(this).css({ left: car.km }); });
C'est exactement ce que j'essaie d'éviter :)
juste lier une variable à ce code> et l'utiliser.
function Car(){
this.km = 0;
var that = this;
$("#sprint").click(function(){
that.drive(this);
});
}
Car.prototype.drive = function(element){
this.km += 10; // i'd like to access the binding (but jq changes it)
this.css({ // also the element
left: this.km
});
alert(element.innerHTML);
// NOTE that is inside this function I want to access them not elsewhere
}
J'ai pensé que cela résoudrait-il moi-même :) Mais j'ai mis à jour la réponse avec comment accéder à la fois à l'instance de classe et à l'élément
L'autre question a aussi ce genre de réponse mais je le trouve assez moche. Est-ce le moyen proposé de le faire dans la communauté de JQuery? Il doit y avoir quelque chose de mieux ... ou est juste une question de goût personnel. Je vais laisser cela rôti un peu plus et acceptera probablement votre réponse.
L'auditeur recevra probablement un objet code> code> contenant une référence à l'élément code> code> qui a déclenché l'événement, vous pouvez probablement utiliser cela. Mais je ne suis pas sûr lequel je trouve le plus laide ..
Oui, mais le problème est que je perds la référence à l'objet actuel (à cause de ce swich) l'élément que je peux obtenir via l'événement.CurrentTarget
ceci code> est lié à la portée, et donc pour que vous puissiez avoir
ce point code> à la bonne portée, vous devez soit avoir l'objet correct sur le côté gauche de la gauche de la '.' Opérateur, ou vous devrez utiliser
.Call code> ou
.Apply code> pour appliquer la portée à la fonction que vous souhaitez appeler. La chose la plus facile si elle est de garder l'objet correct sur le côté gauche en introduisant une variable scopée comme
que code>.
hmm, peut-être que vous pouvez utiliser jQuery.proxy ()? p>