Sto cercando di capire come rimuovere i gestori di eventi anonimi utilizzando jQuery.Rimuovere correttamente gestori di eventi con funzioni anonime
ho definire una variabile per contenere il mio oggetto jQuery:
var dom = $('#private-module');
Più tardi nel mio oggetto:
run: function() {
var button, that = this;
button = dom.append('<button class="btn">Click Me</button>');
button.on('click', function(event) {
console.log('Clicked!');
that.destroy();
});
},
destroy: function() {
var button;
button = dom.find('.btn');
button.off('click');
}
Non importa quello che faccio, non posso uccidere il gestore clic sul pulsante. Mi sembra che la mia comprensione qui della portata sia difettosa. Qual è il modo preferito, in questa situazione per rimuovere il gestore? Ho provato a trovare il nome degli eventi e di tutti i tipi, ma non ho avuto fortuna quindi immagino che sia qualcosa di semplice che ho trascurato. Forse non dovrei nemmeno usare le funzioni anonime per i gestori di eventi.
Giusto per Bolt qualcosa per il mio ragionamento per l'utilizzo di .Append:
http://jsperf.com/jquery-append-vs-appendto
Ecco la soluzione finale:
dom.append('<button class="btn">Send Message</button>');
button = dom.find('.btn');
button.on('click', function (event) {
sendTestMessage();
that.destroy();
});
Sono anche d'accordo e capire sull'utilizzo del metodo .one . Grazie per quello.
realtà si dovrebbe utilizzare la funzione di 'One' per questo. – noob