var test = { }
$(test).on("testEvent", function(){
console.log("testEvent has fired");
});
$.event.trigger("testEvent");
Sto provando a utilizzare jQuery per eseguire un meccanismo di pubblicazione/sottoscrizione utilizzando eventi. Devo essere in grado di allegare eventi a oggetti non DOM ed essere in grado di farli sparare da un singolo trigger globale. Mi aspettavo che il codice sopra funzionasse ma non ha provocato l'attivazione testEvent per l'oggetto test.
Si noti che saranno presenti più oggetti a cui un evento verrà sottoscritto. Un singolo $ .event.trigger dovrebbe generare tutti quegli eventi.
Do atto che questo codice funziona bene:
$('#someID').on("testEvent", function() {
console.log('testEvent has fired from DOM element');
})
$.event.trigger("testEvent");
Il motivo per cui l'evento non viene attivato è perché l'oggetto non fa parte del DOM. Quando sparo $ .event.trigger sta facendo scoppiare l'evento e scoppiando nel DOM. Visto che l'oggetto non fa parte del DOM, non spara. Quello che sto veramente cercando qui è in qualche modo generare eventi all'interno di oggetti non DOM a livello globale usando jQuery. Sto cercando di evitare di dover usare qualcosa come AmplifyJS per realizzare questo. – crv
L'unico modo per attivare l'evento che hai postato è con '$ (test) .trigger (" testEvent ");'. –
Se non si passa un elemento a '$ .event.trigger 'e l'evento che viene attivato non è un evento globale, non innescherà un evento. Vedere il blocco di codice che inizia sulla riga 3104 di http://code.jquery.com/jquery-1.7.2.js. Poiché questo è un metodo non documentato, dobbiamo andare al codice per vedere cosa fa. –