2011-11-11 5 views
7

jQuery ha funzioni come .on() e .trigger() che consentono di allegare eventi agli oggetti DOM e quindi di attivare manualmente tali eventi. La documentazione per queste funzioni si riferisce specificamente agli eventi su "elementi", che io intendo significare elementi HTML/DOM.Posso utilizzare le funzioni di evento di jQuery con semplici oggetti vecchi?

Posso anche utilizzare queste funzioni per aggiungere funzionalità evento a semplici oggetti JavaScript vecchi?

var x = {}; 
$(x).on('bonk', function() { alert('Oif!'); }); 
$(x).trigger('bonk'); // shows the alert 

Questo funziona in tutti i browser che ho provato in (Chrome 15, Firefox 7, IE 9, e l'Opera 11.52, il tutto su Windows), che sembra promettente. Ma non è chiaro dalla documentazione se è in realtà significava essere uno scenario supportato, in tutti i browser, su tutte le piattaforme. La scelta della terminologia ("elementi") dei documenti pone molti dubbi.

Il docs fare stato che posso fare i miei propri nomi di evento (per esempio, la pagina doc per .on() ha un esempio per "Attaccare e innescare personalizzato non-browser) eventi ("). Ma ancora, questo è sempre associato all'evento su un elemento DOM, non su un semplice vecchio oggetto.

C'è qualcosa che stabilisce in modo definitivo se jQuery supporta .on() e .trigger() con semplici oggetti JavaScript vecchi?

+0

Neat. Questo è tutto ciò che ho da dire per ora. Non conosco la risposta, ma grazie per la domanda interessante. –

+0

+1 Ottima domanda! – dSquared

+0

Ho usato questo approccio con oggetti non DOM per un'applicazione evento MVC, e sembrava funzionare cross-browser (incluso IE8). Ma non ho la documentazione per sostenerlo. – nrabinowitz

risposta

2

Guardando il codice sorgente ho trovato alcuni suggerimenti che è destinato, ma poi ho trovato anche questo:

Nessun motivo particolare per cui non è documentato (diverso da quello che è piuttosto non tradizionale per la maggior parte degli utenti) - ma sì, lo supportiamo e lo ha dei test unitari per questo.

http://forum.jquery.com/topic/triggering-custom-events-on-js-objects

Problemi correlati