Passaggio della funzione anonima al trigger di eventi personalizzati in Javascript / jQuery
-
29-10-2019 - |
Domanda
Sto cercando di attivare eventi personalizzati su elementi DOM e passare funzioni anonime da eseguire quando viene attivato l'evento (utilizzando jQuery).Quindi qualcosa del genere:
$(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");
}
});
Quindi fare clic su "some-button" dovrebbe attivare "custom_event" su "some-dom" e causare l'esecuzione della funzione anonima che ho passato al trigger.Giusto?Ma il browser dice che la richiamata non è definita nell'evento personalizzato.Sto facendo qualcosa di sbagliato?Il passaggio di funzioni anonime come argomenti trigger non è consentito?Grazie
Soluzione
È necessario passare più argomenti aggiuntivi a trigger()
come array. (Un argomento può essere passato senza 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
});
Esempio: http://jsfiddle.net/NRSJ2/
Altri suggerimenti
Puoi farlo in questo modo:
$('#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]);
});
Ecco la prova di concetto .