Una versione semplificata di quello che sto cercando di fare è la seguente:jQuery ascoltare a livello globale per evento personalizzato
var indication = $('#some-div');
indication.bind('custom-event', function() { ... }
// ... later on!
function OtherThing() {
$(this).trigger('custom-event');
}
mi piacerebbe indication.bind('custom-event')
per ricevere il grilletto dal function OtherThing
senza i due dover conoscere in modo esplicito su l'un l'altro. È possibile? La mia unica soluzione finora è di legare sia l'ascoltatore che l'evento al corpo ... questo sembra sciatto - c'è un modo migliore?
Cosa intendi con "senza che i due debbano conoscersi esplicitamente l'uno dell'altro"? –
@RobW - non so come spiegarlo ulteriormente, oltre a leggere il codice ... So che posso cambiare '$ (this) .trigger' in' $ ('# some-div) .trigger' e farlo funzionare ma ciò sconfigge lo scopo. Come ho affermato, la mia soluzione attuale è di legare sia l'ascoltatore che gli emettitori a '$ ('body')' – Will