W3docs

DOM-Manipulationsbibliotheken

Erfahren Sie, wie DOM-Bibliotheken wie jQuery das Auswählen von Elementen, das Behandeln von Events und das Ändern des DOM vereinfachen – und wann modernes Vanilla-JavaScript die bessere Wahl ist.

Einführung in Bibliotheken

DOM-Manipulation ist ein zentraler Aspekt der Webentwicklung und ermöglicht dynamische Inhalte sowie interaktive Benutzererlebnisse. Während Vanilla-JavaScript leistungsstarke Methoden zur Interaktion mit dem DOM bietet, kapseln DOM-Manipulationsbibliotheken diese Methoden in einer kürzeren, konsistenteren API. Sie waren in der Ära inkonsistenter Browser unverzichtbar und bleiben für die schnelle Entwicklung und Legacy-Codebasen nützlich.

Dieser Leitfaden erklärt, was diese Bibliotheken leisten, wann sie 2024+ noch sinnvoll sind und wie man die beliebteste davon — jQuery — zum Auswählen von Elementen, zur Event-Behandlung und zur DOM-Manipulation einsetzt. Er zeigt außerdem die modernen Vanilla-Entsprechungen, damit Sie selbst entscheiden können, wann eine Bibliothek ihren Platz wirklich verdient.

Eine DOM-Manipulationsbibliothek ist eine JavaScript-Schicht, die Hilfsfunktionen für Aufgaben bereitstellt, die man andernfalls von Hand schreiben würde: Elemente finden, deren Inhalt lesen und schreiben, Event-Listener hinzufügen, Animationen erstellen und Netzwerkanfragen durchführen. Statt document.querySelectorAll plus einer Schleife schreibt man einen ausdrucksstarken Aufruf, der auf alle übereinstimmenden Elemente gleichzeitig wirkt.

Warum eine Bibliothek für DOM-Manipulation verwenden?

Der Einsatz einer Bibliothek für DOM-Manipulation bietet mehrere Vorteile:

  1. Vereinfachte Syntax: Bibliotheken bieten oft eine prägnanteren und besser lesbaren Syntax im Vergleich zu Vanilla-JavaScript. Ein einziger Aufruf kann auf eine ganze Kollektion von Elementen wirken, ohne eine explizite Schleife.
  2. Cross-Browser-Kompatibilität: Bibliotheken haben historisch Browser-Inkonsistenzen ausgeglichen (denken Sie an Internet Explorers attachEvent vs. das standardisierte addEventListener). Das war ihr ursprüngliches Killer-Feature.
  3. Erweiterte Funktionalität: Bibliotheken liefern eingebaute Hilfsmittel — Animation, AJAX, DOM-Traversierung, Effekte — die in reinem JavaScript viele Zeilen erfordern würden.
  4. Gesteigerte Produktivität: Durch die Abstraktion häufiger Aufgaben ermöglichen Bibliotheken es, weniger Code zu schreiben und sich auf Features zu konzentrieren.

Wann Sie eine Bibliothek möglicherweise nicht benötigen

Moderne Browser implementieren eine umfangreiche, standardisierte DOM-API, sodass viele Gründe für den Einsatz einer Bibliothek weggefallen sind:

  • document.querySelector / querySelectorAll decken CSS-Selektor-Suchen nativ ab.
  • element.classList, el.append(), el.closest() und el.matches() ersetzen gängige jQuery-Hilfsmethoden.
  • fetch() ersetzt $.ajax, und die Web Animations API deckt viele Effekte ab.

Wenn Sie ein neues Projekt starten, das nur auf Evergreen-Browser abzielt, können Sie die Bibliothek oft ganz weglassen und weniger JavaScript ausliefern. Greifen Sie zu einer Bibliothek, wenn Sie bestehenden jQuery-Code pflegen, das Plugin-Ökosystem benötigen oder deren knappe Syntax für schnelles Prototyping schätzen.

Die Bibliothekslandschaft

BibliothekSchwerpunktStatus heute
jQueryAllgemeines DOM, Events, AJAX, AnimationAusgereift; noch immer verbreitet in Legacy-Apps und CMS-Themes (z. B. WordPress)
CashjQuery-ähnliche API, ~80 % kleinerLeichtgewichtiger Ersatz für moderne Browser
ZeptojQuery-kompatibel, Mobile-firstWeitgehend durch native APIs abgelöst
Umbrella JSKleine DOM-/Event-HilfsmittelNische, nur für moderne Browser

Die Konzepte unten verwenden jQuery, da seine API die Vorlage geliefert hat, die die anderen nachahmen.

jQuery-Grundlagen

jQuery ist eine schnelle, kleine und funktionsreiche JavaScript-Bibliothek. Sie macht Aufgaben wie das Traversieren und Manipulieren von HTML-Dokumenten, das Behandeln von Events und Animationen mit einer einfach zu bedienenden API, die über eine Vielzahl von Browsern hinweg funktioniert, wesentlich einfacher.

Alles in jQuery beginnt mit der globalen $-Funktion (ein Alias für jQuery). Übergibt man ihr einen CSS-Selektor, wird ein jQuery-Objekt zurückgegeben — eine gekapselte Kollektion übereinstimmender DOM-Knoten, auf der man Methoden verketten kann. Den Code in $(document).ready(...) (oder die Kurzform $(function(){ ... })) einzuschließen stellt sicher, dass das DOM vollständig geparst ist, bevor man es berührt — ähnlich wie das Lauschen auf das native DOMContentLoaded-Event.

Elemente auswählen

Das Auswählen von Elementen in jQuery ist unkompliziert und spiegelt CSS-Selektoren wider. Vergleichen Sie diese gleichwertigen Abfragen — der jQuery-Aufruf wirkt auf alle Treffer gleichzeitig, während die native API eine NodeList zurückgibt, über die Sie iterieren müssen:

// Vanilla JavaScript
document.querySelectorAll(".content").forEach(function (el) {
  el.textContent = "Hello";
});

// jQuery — no explicit loop needed
$(".content").text("Hello");

Lesen Sie Selecting DOM Elements für einen tieferen Einblick in native Selektoren.

<!DOCTYPE html>
<html>
<head>
    <title>jQuery Element Selection</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div class="content">Hello World</div>
    <button id="change-text">Change Text</button>

    <script>
        $(document).ready(function(){
            $("#change-text").click(function(){
                $(".content").text("Hello jQuery");
            });
        });
    </script>
</body>
</html>

Dieses Beispiel demonstriert das Auswählen von Elementen mit jQuery und das Ändern ihres Textinhalts, wenn ein Button geklickt wird.

Events behandeln

jQuery vereinfacht die Event-Behandlung mit seinen intuitiven Methoden. Die Methode .on() ist der moderne, bevorzugte Weg zum Binden von Handlern; sie unterstützt auch Event-Delegation, sodass ein einzelner Listener auf einem Elternelement Events von aktuellen und zukünftigen Kindelementen verarbeiten kann. Mehr dazu in Event Handling in the DOM.

<!DOCTYPE html>
<html>
<head>
    <title>jQuery Event Handling</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="click-me">Click Me</button>

    <script>
        $(document).ready(function(){
            $("#click-me").on("click", function(){
                alert("Button clicked!");
            });
        });
    </script>
</body>
</html>

Dieses Beispiel zeigt, wie man mit jQuery ein Click-Event auf einem Button behandelt und beim Klicken eine Alarmmeldung anzeigt.

Das DOM manipulieren

jQuery bietet zahlreiche Methoden zur einfachen DOM-Manipulation — .append(), .prepend(), .html(), .text(), .attr(), .css(), .addClass() und .remove(), unter anderem.

<!DOCTYPE html>
<html>
<head>
    <title>jQuery DOM Manipulation</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div id="container">
        <p>Initial Paragraph</p>
    </div>
    <button id="add-content">Add Content</button>

    <script>
        $(document).ready(function(){
            $("#add-content").click(function(){
                $("#container").append("<p>New Paragraph</p>");
            });
        });
    </script>
</body>
</html>

Dieses Beispiel veranschaulicht, wie man mit jQuery neue Inhalte an ein bestehendes Element im DOM anhängt.

Methoden verketten

Die meisten jQuery-Methoden geben dasselbe jQuery-Objekt zurück, sodass man Aufrufe verketten und in einem einzigen Ausdruck mehrere Operationen auf eine Auswahl anwenden kann. Dies vermeidet erneute DOM-Abfragen und hält zusammengehörige Änderungen zusammen:

$("#card")
  .addClass("active")
  .css("color", "white")
  .text("Selected")
  .fadeIn(300);

Jeder Aufruf wirkt auf das Ergebnis des vorherigen und lässt sich von oben nach unten wie ein Satz lesen.

jQuery vs. Vanilla JavaScript

Wenn Sie abwägen, ob eine Bibliothek den Aufwand lohnt, sehen Sie hier, wie die gängigen Operationen auf native Entsprechungen abgebildet werden, die in jedem modernen Browser verfügbar sind:

AufgabejQueryVanilla JavaScript
Alle Treffer auswählen$(".item")document.querySelectorAll(".item")
Text setzen$(el).text("Hi")el.textContent = "Hi"
Klasse hinzufügen$(el).addClass("on")el.classList.add("on")
Listener hinzufügen$(el).on("click", fn)el.addEventListener("click", fn)
HTML anhängen$(el).append("<p>x</p>")el.insertAdjacentHTML("beforeend", "<p>x</p>")
Nächsten Vorfahren finden$(el).closest(".box")el.closest(".box")

Für neue Projekte, die auf moderne Browser abzielen, reicht die native Spalte meist völlig aus. Lesen Sie DOM Manipulation Techniques für native Muster.

Best Practices

  1. jQuery aktuell halten: Verwenden Sie stets die neueste Version von jQuery, um von Performance-Verbesserungen und Sicherheits-Patches zu profitieren.
  2. CDN verwenden: Liefern Sie jQuery über ein Content Delivery Network (CDN) aus, um Ladezeiten zu verbessern und die Wahrscheinlichkeit zu erhöhen, dass es im Browser des Nutzers gecacht ist.
  3. jQuery-Nutzung minimieren: Setzen Sie jQuery nur ein, wenn es einen klaren Vorteil gegenüber Vanilla-JavaScript bietet, insbesondere da moderne Browser die meisten Standard-DOM-Operationen effizient unterstützen.
  4. Methoden verketten: Nutzen Sie jQuerys Fähigkeit zur Methodenverkettung für prägnanteren und besser lesbaren Code.
  5. Selektoren optimieren: Verwenden Sie spezifische und effiziente Selektoren, um den Performance-Overhead zu minimieren.

Fazit

Der Einsatz von Bibliotheken wie jQuery für die DOM-Manipulation kann Ihren Webentwicklungs-Workflow erheblich verbessern und bietet vereinfachte Syntax, Cross-Browser-Kompatibilität und erweiterte Funktionalität. Durch die Einhaltung von Best Practices können Sie sicherstellen, dass Ihr Einsatz dieser Bibliotheken effizient, wartbar und effektiv ist. Nutzen Sie die Stärke von Bibliotheken, um dynamische und interaktive Webanwendungen mit Leichtigkeit zu erstellen.

Übungen

Übung
Welche der folgenden Aussagen über DOM-Manipulationsbibliotheken sind zutreffend?
Welche der folgenden Aussagen über DOM-Manipulationsbibliotheken sind zutreffend?
Was this page helpful?