Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der Ereignisse, die an Dom-Elemente in jQuery_jquery gebunden sind

Detaillierte Erläuterung der Ereignisse, die an Dom-Elemente in jQuery_jquery gebunden sind

WBOY
Freigeben: 2016-05-16 16:02:29
Original
1036 Leute haben es durchsucht

Als professioneller Instinkt von Technikfanatikern frage ich mich, wenn ich die Funktionen eines technischen Produkts sehe, wie es umgesetzt wird. Jedes Mal, wenn ich beispielsweise eine coole Benutzeroberfläche oder eine coole Funktion auf der Website einer anderen Person sehe, kann ich nicht anders, als die Browserkonsole zu öffnen. . .

Okay, ohne zu weit zu gehen, lassen Sie uns darüber sprechen, was Sie tun sollten, wenn Sie den Code einer Ereignisfunktion sehen möchten, die an ein Element auf der Website gebunden ist.

Sehen Sie sich den nativ gebundenen Ereignisfunktionscode an

Der sogenannte Native besteht darin, über die addEventListener-Methode an das dom-Element zu binden. Das geht ganz einfach:

Inspizieren Sie das an das Ereignis gebundene Element (klicken Sie mit der rechten Maustaste darauf ->Element überprüfen). Klicken Sie in der Konsole der Popup-Elementansicht auf die Registerkarte „Ereignis-Listener“ auf der rechten Seite und dann können Sie alle sehen An das Element gebundene Elemente, klicken Sie darauf, suchen Sie den Handler, klicken Sie mit der rechten Maustaste und wählen Sie das Menü „Funktionsdefinition anzeigen“. Sie können zum Quellcodespeicherort der an das Element gebundenen Ereignisfunktion springen. Es gibt Bilder und die Wahrheit:

Zeigen Sie den durch jquery gebundenen Ereignisfunktionscode an

Nun, ich weiß, Sie sind auf ein Problem gestoßen, oder? Bei allen durch JQuery gebundenen Ereignisfunktionen springen Sie über die obige Methode zum JQuery-Code, und dieser befindet sich immer an dieser Stelle. Es zu sehen ist dasselbe wie es nicht zu sehen. Deshalb ist Bruder Bao hier, um Ihnen beizubringen, wie man JQuery anzeigt.

Um das Element zu überprüfen, klicken Sie auch auf die Ansicht „Eigenschaften“. Wählen Sie das erste aus, erweitern Sie es und suchen Sie ein Attribut wie „jQueryxxxxx (eine Zahlenfolge)“. Merken Sie sich dessen Wert (normalerweise eine Zahl) N

Wechseln Sie dann zur Konsolenansicht auf der linken Seite und führen Sie $.cache[N] in der Konsole aus. Hier ist der vorherige Attributwert

Dann kommen die Dinge zum Vorschein, die an dieses Element gebunden sind. Wenn Sie Ereignisse erweitern, wird die eigentliche Funktion angezeigt, die Sie anzeigen möchten. Klicken Sie mit der rechten Maustaste auf die Funktion... hinter dem Handle unter dem jeweiligen Ereignis und wählen Sie dann „Funktionsdefinition anzeigen“, um sie anzuzeigen.

Beispiel=》http://demo.sudodev.cn/frontend/jqDetectZeigen Sie den an die jquery2.x-Version gebundenen Ereignisfunktionscode an

Okay, ich weiß, Sie müssen wieder auf Probleme gestoßen sein. Denn wenn Sie die jquery2.x-Version von jquery verwenden, funktioniert die obige Methode nicht mehr. Der Grund dafür ist, dass sich die Codestruktur von 2.x geändert hat. Tatsächlich verwenden die Ereignisse der 2.x-Version immer noch den Cache-Mechanismus, werden jedoch nicht wie die 1.x-Version nach außen offengelegt, sondern sind im Abschlussobjekt data_priv und in der komprimierten Version von gekapselt Wird im Allgemeinen jquery verwendet, können Sie diesen data_priv-Namen nicht anzeigen. Nachdem Sie den Quellcode der jquery2.x-Version überprüft haben, zeigt Ihnen Bruder Bao, wie Sie ihn finden:

Gehen Sie direkt zur Konsole und erstellen Sie ein Objekt mit jQuery, um jQuery in der Konsole anzuzeigen. Geben Sie beispielsweise var o={j:$} ein. Dies hat den Vorteil, dass Sie nach der Ausführung alle Eigenschaften von jQuery

in der Steuerleiste sehen können.

Erweitern Sie dann das jQuery-Objekt (hier ist j) in der Konsole, suchen Sie die _queueHooks-Methode und sehen Sie, dass ihr Code wahrscheinlich „return L.get(a,c)||L.access…“ lautet, markieren Sie it down Das Leben in diesem L kann L sein oder auch nicht)

Erweitern Sie ein beliebiges Objekt der ersten Ebene unter j, z. B. _queueHooks oben, suchen Sie nach „Erweitern“ und erweitern Sie dann „Verschluss“ unten, suchen Sie das „L“-Couplett davor, klicken Sie mit der rechten Maustaste auf den Buchstaben dahinter und wählen Sie „Als globale Variable speichern“. ”

Dann wird in der Konsole ein tempX-Objekt angezeigt, das den Cache enthält. Nehmen wir an, es heißt temp1. Dieser temp1 verfügt über eine Get-Methode, die sein Cache-Objekt direkt abrufen kann. Angenommen, Sie möchten die ID des Objekts anzeigen, das an das Ereignis namens clickMe gebunden ist. Führen Sie dann temp1.get($('#clickMe').get(0)) (oder temp1.get(document.querySelector('#clickMe')))) aus und es wird etwas ausgegeben, das der jquery1.x-Version oben

entspricht

Das folgende Beispiel ist dasselbe wie die obige jquery1.x-Methode=》http://demo.sudodev.cn/frontend/jq2DetectAnderes:

Die oben genannten Vorgänge werden standardmäßig unter dem Chrome-Browser ausgeführt. Tatsächlich ist es unter Firefox ähnlich, dass Sie als Techniker in der Lage sein sollten, Schlussfolgerungen aus einem Beispiel zu ziehen. Was IE betrifft, äh... tun Sie so, als hätte ich es nicht gesagt. :)

Update:

1. Um sich die Mühe zu ersparen, Attribute zu überprüfen, kann jquery1.x direkt $.cache[$('#clickMe').get(0)[$.expando]] auf der Konsole ausführen, um die an das Element gebundenen Dinge auszugeben, anstatt zuerst den Wert des jQueryxxxxxxx-Attributs auf dem Element zu überprüfen

2. Nach einer Artikelbesprechung und einem Test. Es gibt eine neue Methode, die derzeit am arbeitssparendsten ist und auf jquery1 und jquery2 anwendbar ist. Geben Sie $._data($('#clickMe').get(0)) direkt in die Konsole ein, um alles auszugeben, was an das Element gebunden ist. Aus den Kommentaren im jquery2-Quellcode haben wir jedoch herausgefunden, dass $._data in zukünftigen Versionen abgeschafft wird. Daher ist die oben vorgestellte Methode immer noch sehr wertvoll. Es ist besser, Menschen das Fischen beizubringen, als ihnen das Fischen beizubringen, :)

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage