Ho scritto un menu a discesa assolutamente posizionato. Sto innescando un evento personalizzato quando questo menu si apre:Come fare il bubble dell'evento jQuery personalizzato su window.document?
ps.DropDown.prototype._onOpenComplete = function() {
$(this).trigger('MENU_OPEN', [this]);
}
Questa grande opera quando so che istanza di ps.DropDown a bersaglio:
var dd = new ps.DropDown();
$(dd).on('MENU_OPEN', fn);
Tuttavia, vorrei per il mio evento personalizzato bolla fino a window.document se l'evento non viene fermato dalla propagazione. Ad esempio:
var dd = new ps.DropDown();
$(dd).on('MENU_OPEN', function(event, instance) {
// this would stop bubbling to $(window.document)
// event.stopPropagation();
});
$(window.document).on('MENU_OPEN', function(event, instance) {
// bubbled!
});
C'è un modo per farlo con jQuery?
EDIT per aggiungere un esempio per analogia
Un clic su un elemento tasto attiverà un evento. Questo evento continuerà a presentare la catena genitore-elemento fino a quando non raggiunge window.document (a meno che la propagazione non venga interrotta da un listener di eventi). Sono interessato a sintetizzare questo comportamento per gli eventi personalizzati in modo tale che se event.stopPropagation() non viene chiamato, esso diventerà bubble a window.document (o $ .event, o qualche altra finestra globale, non importa)
Il tuo codice sembra buono a chiunque si sia iscritto all'evento 'MENU_OPEN' dovrebbe essere attivato con' .trigger ('MENU_OPEN) '. – ShankarSangoli
Sì, ma sto cercando una soluzione che non richieda un riferimento a un'istanza di ps.DropDown. Voglio che l'evento bolla a window.document. – thesmart