Heim >Web-Frontend >js-Tutorial >JavaScript vs JQuery HTML -Sammlungen
<body> <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> </body>Greifen wir jeden Absatzknoten mit GetElementsByTagName und einem JQuery -Selektor an:
var pCollection = document.getElementsByTagName("p"); var pQuery = $("p"); console.log("pCollection.length: ", pCollection.length); console.log("pQuery.length: ", pQuery.length);Beide geben die gleichen Knoten zurück, sodass die Sammlungslänge 3 beträgt:
pCollection.length: 3 pQuery.length: 3Wir werden dem Dokument jetzt ein weiteres Absatzelement hinzufügen und die Sammlungen erneut ansehen:
// add new paragraph var newp = document.createElement("p"); newp.appendChild(document.createTextNode("Paragraph 4")); document.body.appendChild(newp); // // display length console.log("pCollection.length: ", pCollection.length); console.log("pQuery.length: ", pQuery.length);Das Ergebnis:
pCollection.length: 4 pQuery.length: 3HTMLCollection -Objekte sind Live . Sie werden automatisch aktualisiert, wenn sich das zugrunde liegende Dokument ändert. JQuery und die meisten anderen JavaScript -Bibliotheken verwenden Methoden wie document.getElementsByTagName (), kopieren jedoch die resultierenden Knoten in ein echtes Array. Daher handelt es sich um eine Anfrage zum Status des Dokuments zu diesem Zeitpunkt: Sie wird nie aktualisiert. Bei beiden Methoden gibt es Vor- und Nachteile. Beispielsweise verursacht der folgende Code eine unendliche Schleife, da die HTMLCollection -Länge zunimmt, wenn
Elemente hinzugefügt werden:
var pCollection = document.getElementsByTagName("p"); for (var i = 0; i < pCollection.length; i++) { document.body.appendChild(pCollection[i].cloneNode(true)); }Trotzdem kann es Situationen geben, in denen eine schnellere, native lebende HTMLCollektion nützlicher ist als eine statische Sammlung von JQuery -Knoten oder wiederholt die gleiche Auswahl. Glücklicherweise können wir jede Sammlung an JQuery weitergeben, wenn wir sie manipulieren wollen, z.
var pCollection = document.getElementsByTagName("p"); // ... add nodes, do work, etc ... $(pCollection).addClass("myclass");JQuery und andere Bibliotheken können die Entwicklungsaufwand senken, aber immer prüfen, ob es möglich ist, effizientere Code in einfachem JavaScript zu schreiben, ohne zusätzliche Dateianforderungen und Verarbeitungsaufgaben zu verarbeiten.
$ ('. Beispiel'). Jede (Funktion (Index, Element) {
console.log (Index, Element); Methoden auf einer HTML -Sammlung, die von einer JavaScript -Methode zurückgegeben wird. Dies liegt daran, dass JavaScript -Methoden HTML -Sammlungen zurückgeben, während JQuery -Methoden JQuery -Objekte zurückgeben. Sie können die HTML -Sammlung jedoch mit der jQuery -Funktion $ () in ein JQuery -Objekt konvertieren, wie SO:
let collection = document.getElements byclassName ('Beispiel');
lass jQueryObject = $ (Sammlung);
sowohl in JavaScript als auch in JQuery können Sie mithilfe von Bracket -Notation auf einzelne Elemente in einer HTML -Sammlung zugreifen, ähnlich wie Sie in einem Array auf Elemente zugreifen würden. Um beispielsweise auf das erste Element in einer Sammlung zugreifen zu können, verwenden Sie die Sammlung [0].
Das obige ist der detaillierte Inhalt vonJavaScript vs JQuery HTML -Sammlungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!