Passando função anônima para gatilho de evento personalizado em Javascript / jQuery
-
29-10-2019 - |
Pergunta
Estou tentando disparar eventos personalizados em elementos DOM e passar funções anônimas a serem executadas quando o evento é disparado (usando jQuery).Então, algo assim:
$(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");
}
});
Portanto, clicar em "algum-botão" deve acionar "custom_event" em "algum-dom" e fazer com que a função anônima que passei no gatilho seja executada.Direita?Mas o navegador diz que o retorno de chamada é indefinido no evento personalizado.Estou fazendo algo errado?Não é permitido passar funções anônimas como argumentos de gatilho?Obrigado
Solução
Você precisa passar vários argumentos extras para trigger()
como um Array. (Um argumento pode ser passado sem o Array.)
$(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
});
Exemplo: http://jsfiddle.net/NRSJ2/
Outras dicas
Você pode fazer assim:
$('#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]);
});
Aqui está a prova de conceito .