Estoy tratando de encontrar la mejor manera de eliminar manejadores de eventos anónimos usando jQuery.Elimine correctamente los controladores de eventos de funciones anónimas
que definen una variable para contener mi objeto jQuery:
var dom = $('#private-module');
Más adelante en mi objeto:
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');
}
No importa lo que hago, no puedo matar al controlador de clic en el botón. Siente que mi entendimiento aquí del alcance es defectuoso. ¿Cuál es la forma preferida, en esta situación para eliminar el controlador? Intenté ponerle nombre a los eventos y todo tipo pero no tuve suerte, así que supongo que es algo simple que he pasado por alto. Tal vez ni siquiera debería usar funciones anónimas para los manejadores de eventos.
Sólo para atornillar a algo en mi razonamiento para el uso de .Append:
http://jsperf.com/jquery-append-vs-appendto
Aquí está la solución final:
dom.append('<button class="btn">Send Message</button>');
button = dom.find('.btn');
button.on('click', function (event) {
sendTestMessage();
that.destroy();
});
También estoy de acuerdo y entiendo sobre el uso del método de .one . Gracias por eso.
En realidad, usted debe utilizar el 'one' función para esto. – noob