Pasar una función anónima al desencadenador de eventos personalizados en Javascript / jQuery
-
29-10-2019 - |
Pregunta
Estoy intentando activar eventos personalizados en elementos DOM y pasar funciones anónimas para que se ejecuten cuando se activa el evento (usando jQuery).Algo como esto:
$(some-dom).live("custom_event", function(evtObj, data, callback) {
//do some stuff
callback();
});
$(some-button).click(function() {
$(some-dom).trigger("custom_event", some_data, function () {
alert("this is my anonymous function passed as event data");
}
});
Por lo tanto, hacer clic en "algún-botón" debería activar "custom_event" en "algún-dom" y provocar que se ejecute la función anónima que pasé en el activador.¿Correcto?Pero el navegador dice que la devolución de llamada no está definida en el evento personalizado.¿Estoy haciendo algo mal?¿No se permite pasar funciones anónimas como argumentos de activación?Gracias
Solución
Debe pasar varios argumentos adicionales a trigger()
como una matriz. (Se puede pasar un argumento sin la matriz).
$(some-dom).click(function() { // v-----pass extra args in an Array
$(some-dom).trigger("custom_event", [some_data, function () {
alert("this is my anonymous function passed as event data");
}]);
// ^------Array
});
Ejemplo: http://jsfiddle.net/NRSJ2/
Otros consejos
Puede hacerlo así:
$('#testelement').live("test_event", function(e, myCallback) {
myCallback();
});
$('#clickme').click(function(e){
e.preventDefault();
var myFunc = function () {
alert("this is my anonymous function passed as event data");
};
$('#testelement').trigger('test_event', [myFunc]);
});
Aquí está la prueba de concepto .