Observo que se recomienda use named functions when binding an event handler to a javascript event. ¿Cómo puedo hacer esto cuando mi función necesita pasar el objeto this
?
Por ejemplo, ¿cómo iba a reemplazar la función anónima a continuación llamando directamente doFancyStuff
:
$(document).on('change', 'input.fancy-textbox', function() {
doFancyStuff($(this));
});
function doFancyStuff($textbox) {
// fanciness
}
puntos extra si usted señala otras convenciones que podría estar rompiendo con el código de seguridad.
Para aclarar, quiero llamar al método doFancyStuff()
en mi ejemplo desde múltiples lugares, de lo contrario sí, yo podría hacer algo como esto:
$(document).on('change', 'input.fancy-textbox', doFancyStuff);
function doFancyStuff() {
var $textbox = $(this);
// fanciness
}
Lamentablemente, la función se llama desde varios lugares - algunos lugares donde 'this' no es el' $ textbox' Quiero que la función tener acceso a. ¿Tiene alguna sugerencia sobre cómo podría cambiar la función para que se adapte mejor a lo que necesito? – ajbeaven
El segundo ejemplo es la forma de evitar esto, aunque prefiero el código que comenzó con la función anónima. Además, probablemente puedas usar el primero y verificar si el primer argumento es un objeto jquery o un evento y funcionan de manera diferente en cada uno, de nuevo me parece más desordenado que la función en línea. –
Un ejemplo de la prueba del primer argumento para ver de qué tipo es: http://jsfiddle.net/Rzsep/ pero no lo estoy poniendo en mi respuesta porque no me gusta. Tenga en cuenta que la forma en que pruebo si es un evento es probablemente una forma horrible de probarlo, pero es rápido y sucio. –