Frage

Ich freue mich, Ereignisse in JavaScript mit derselben Methode als jQuery zu erstellen. Hat jemand weiß, wie jquery es tut?

Mein Denken ist, dass das Verwenden von RAW-JavaScript solcher:

generasacodicetagpre.

funktioniert eigentlich nicht im Android-Native-Browser, da er den Dom Level 3 nicht wie Chrome und andere Browser nicht unterstützt.

Allerdings funktioniert jQuery , funktioniert an Androids Stockbrowser, und verwendet einfach:

generasacodicetagpre.

Meine Frage ist, was ist der Code dahinter?Ich habe versucht, es zu finden, indem ich von jQuerys Quellcode , aberkann meinen Kopf nicht dazu bringen!

War es hilfreich?

Lösung

Die grundlegende Sache hier ist folgende: Wenn Sie einen Event-Handler mit jQuery anhaken, fügt JQUERY nicht direkt den Handler zum DOM-Element hinzu. Stattdessen hilft jQuery einen eigenen Handler auf dem DOM-Element (wenn es nicht schon einen dabei hat). Wenn das Ereignis auftritt, betrachtet jQuery die Liste der JQuery-registrierten Handler für das Ereignis und feuert sie in der Reihenfolge ab. (Dafür gibt es mehrere Gründe; anfangs war es in erster Linie in erster Linie, dh Speicherlecks und die Tatsache, dass dh die Handler in einer Reihenfolge, und alle anderen in einer anderen Reihenfolge; so übernommene Jquery über und sorgte die Bestellung.)

(Sie können sehen, wo ich mit diesem ...)

Wenn Sie also generasAndicetagCode verwenden, sendet JQuery das synthetische Ereignis an das DOM-Element, aber nicht ist nicht auf diesem synthetischen Ereignis zu funktionieren; Es ruft die Handler auf, die Sie direkt durch jQuery registriert haben. In der Tat setzt es eine Flagge, so dass es weiß, dass es das ist, dass es das getan hat, also, wenn der Browser das Ereignis tut, um das Ereignis an den Händler von Jquery zu schicken, weiß Jquery, um es zu ignorieren (da es bereits seine Arbeit erledigt ist) .

Sie sehen dies in all seiner Herrlichkeit, beginnend mit der Linie 4.464 von die aktuelle unkomprimierte JQuery-Datei .

grundsätzlich bauen jquerys ein eigenes Pub / Sub-System und verwendet nur das Browserereignissystem als Input dazu. So müssen benutzerdefinierte Ereignisse normalerweise nicht mit dem Browser sprechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top