Domanda

Sto cercando di creare eventi in JavaScript usando la stessa metodologia del jQuery- Qualcuno sa quanto lo fa jQuery?

Il mio ragionamento è che usando JavaScript Raw in modo tale:

var myEvent = new CustomEvent("userLogin", eventProperties);
.

... non funziona effettivamente sul browser nativo Android, in quanto non supporta il DOM LEVEL 3 come Chrome e altri browser.

Tuttavia, JQuery fa lavora sul browser di Android, e semplicemente utilizza:

$.event.trigger('MyEvent');
.

La mia domanda è, qual è il codice dietro questo?Ho provato a trovarlo attraversando JQuery's codice sorgente , manon riesco a farla andare in testa!

È stato utile?

Soluzione

La cosa fondamentale qui è questa: quando collega un gestore di eventi con jquery, jQuery non aggiungi direttamente quel gestore all'elemento DOM. Invece, JQuery gancia un conduttore di propri sull'elemento Dom (se non ne ha già uno su di esso). Quando si verifica l'evento, JQuery esamina l'elenco dei gestori jquery-registrati per l'evento e li attira in ordine. (Ci sono diverse ragioni per questo; inizialmente è stato principalmente intorno a cioè le perdite di memoria e il fatto che cioè i gestori sparati in un unico ordine e tutti gli altri in un ordine diverso; quindi jquery ha preso il sopravvento e ha assicurato l'ordine.)

(potresti essere in grado di vedere dove sto andando con questo ...)

Quindi quando si utilizza trigger, JQuery invia l'evento sintetico all'elemento DOM, ma non affidabile su quell'evento sintetico per funzionare; Chiama i gestori che ti sei registrato tramite jQuery direttamente. Infatti, imposta una bandiera in modo che sappia che lo è fatto, quindi se il browser fa invia l'evento al gestore di jQuery per questo, jquery sa per ignorarlo (dal momento che ha già fatto il suo lavoro) .

Puoi vedere questo in tutta la sua gloria a partire dalla linea 4.464 di Il file jquery non compresso corrente .

Così fondamentalmente costruisci Jquery il proprio PUB / SUB System e utilizza solo il sistema di eventi del browser come un contributo ad esso. Quindi gli eventi personalizzati di solito non devono parlare con il browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top