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?
Neat. Questo è tutto ciò che ho da dire per ora. Non conosco la risposta, ma grazie per la domanda interessante. –
+1 Ottima domanda! – dSquared
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