W3docs

Bibliothèques de manipulation du DOM

Apprenez comment les bibliothèques DOM comme jQuery simplifient la sélection d'éléments, la gestion des événements et la modification du DOM, et quand JavaScript natif est préférable.

Introduction aux bibliothèques

La manipulation du DOM est un aspect fondamental du développement web, permettant de créer des contenus dynamiques et des expériences utilisateur interactives. Bien que le JavaScript natif fournisse des méthodes puissantes pour interagir avec le DOM, les bibliothèques de manipulation du DOM encapsulent ces méthodes dans une API plus courte et plus cohérente. Elles étaient indispensables à l'époque des navigateurs incohérents et restent utiles pour le développement rapide et les bases de code héritées.

Ce guide explique ce que font ces bibliothèques, dans quels cas elles restent pertinentes en 2024+, et comment utiliser la plus populaire d'entre elles — jQuery — pour sélectionner des éléments, gérer des événements et modifier le DOM. Il présente également les équivalents modernes en JavaScript natif afin que vous puissiez décider quand une bibliothèque mérite vraiment sa place.

Une bibliothèque de manipulation du DOM est une couche JavaScript qui expose des fonctions utilitaires pour des tâches que vous écririez autrement manuellement : trouver des éléments, lire et modifier leur contenu, attacher des écouteurs d'événements, animer et effectuer des requêtes réseau. Au lieu d'utiliser document.querySelectorAll suivi d'une boucle, vous écrivez un seul appel expressif qui opère sur tous les éléments correspondants à la fois.

Pourquoi utiliser une bibliothèque pour la manipulation du DOM ?

L'utilisation d'une bibliothèque pour la manipulation du DOM offre plusieurs avantages :

  1. Syntaxe simplifiée : Les bibliothèques proposent souvent une syntaxe plus concise et plus lisible qu'en JavaScript natif. Un seul appel peut opérer sur une collection entière d'éléments sans boucle explicite.
  2. Compatibilité entre navigateurs : Les bibliothèques ont historiquement comblé les incohérences entre navigateurs (pensez à attachEvent d'Internet Explorer face au standard addEventListener). C'était leur fonctionnalité phare à l'origine.
  3. Fonctionnalités enrichies : Les bibliothèques embarquent des utilitaires intégrés — animation, AJAX, traversée du DOM, effets — qui nécessiteraient de nombreuses lignes en JavaScript simple.
  4. Productivité améliorée : En abstrayant les tâches courantes, les bibliothèques vous permettent d'écrire moins de code et de vous concentrer sur les fonctionnalités.

Quand vous n'avez pas forcément besoin d'une bibliothèque

Les navigateurs modernes implémentent une API DOM riche et standardisée, ce qui rend de nombreuses raisons de recourir à une bibliothèque obsolètes :

  • document.querySelector / querySelectorAll couvrent nativement les recherches par sélecteur CSS.
  • element.classList, el.append(), el.closest() et el.matches() remplacent les utilitaires jQuery courants.
  • fetch() remplace $.ajax, et l'API Web Animations couvre de nombreux effets.

Si vous démarrez un nouveau projet ciblant uniquement les navigateurs modernes, vous pouvez souvent vous passer de la bibliothèque et livrer moins de JavaScript. Optez pour une bibliothèque lorsque vous maintenez du code jQuery existant, avez besoin de son écosystème de plugins, ou souhaitez sa syntaxe concise pour un prototypage rapide.

Le paysage des bibliothèques

BibliothèqueObjectifStatut actuel
jQueryDOM général, événements, AJAX, animationMature ; encore courant dans les applications legacy et les thèmes CMS (ex. WordPress)
CashAPI similaire à jQuery, ~80% plus légèreAlternative légère pour les navigateurs modernes
ZeptoCompatible jQuery, orientée mobileLargement supplanté par les API natives
Umbrella JSPetits utilitaires DOM/événementsNiche, navigateurs modernes uniquement

Les concepts ci-dessous utilisent jQuery car son API a servi de modèle aux autres bibliothèques.

Les bases de jQuery

jQuery est une bibliothèque JavaScript rapide, légère et riche en fonctionnalités. Elle simplifie considérablement la traversée et la manipulation de documents HTML, la gestion des événements et les animations grâce à une API facile à utiliser qui fonctionne sur une multitude de navigateurs.

Tout dans jQuery commence par la fonction globale $ (alias de jQuery). Lui passer un sélecteur CSS retourne un objet jQuery — une collection encapsulée de nœuds DOM correspondants sur laquelle vous pouvez chaîner des méthodes. Envelopper votre code dans $(document).ready(...) (ou son raccourci $(function(){ ... })) garantit que le DOM est entièrement analysé avant que vous le manipuliez, à l'image de l'écoute de l'événement natif DOMContentLoaded.

Sélectionner des éléments

La sélection d'éléments avec jQuery est simple et reproduit les sélecteurs CSS. Comparez ces recherches équivalentes — l'appel jQuery s'applique à toutes les correspondances à la fois, tandis que l'API native retourne une NodeList que vous devez parcourir :

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

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

Consultez Sélectionner des éléments du DOM pour un aperçu plus approfondi des sélecteurs natifs.

<!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>

Cet exemple montre comment sélectionner des éléments avec jQuery et modifier leur contenu textuel lorsqu'un bouton est cliqué.

Gérer les événements

jQuery simplifie la gestion des événements grâce à ses méthodes intuitives. La méthode .on() est la façon moderne et privilégiée d'attacher des gestionnaires ; elle prend également en charge la délégation d'événements, permettant à un seul écouteur sur un parent de gérer les événements des éléments enfants actuels et futurs. Pour en savoir plus, consultez La gestion des événements dans le 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>

Cet exemple montre comment gérer un événement de clic sur un bouton avec jQuery, affichant un message d'alerte lorsque le bouton est cliqué.

Manipuler le DOM

jQuery fournit de nombreuses méthodes pour manipuler facilement le DOM — .append(), .prepend(), .html(), .text(), .attr(), .css(), .addClass() et .remove(), entre autres.

<!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>

Cet exemple illustre comment utiliser jQuery pour ajouter du nouveau contenu à un élément existant dans le DOM.

Chaîner les méthodes

La plupart des méthodes jQuery retournent le même objet jQuery, ce qui vous permet de chaîner les appels et d'appliquer plusieurs opérations à une sélection en une seule expression. Cela évite d'interroger le DOM à nouveau et regroupe les modifications associées :

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

Chaque appel s'exécute sur le résultat du précédent, se lisant de haut en bas comme une phrase.

jQuery vs. JavaScript natif

Si vous cherchez à savoir si une bibliothèque vaut le coup, voici comment les opérations courantes correspondent à leurs équivalents natifs disponibles dans tous les navigateurs modernes :

TâchejQueryJavaScript natif
Sélectionner toutes les correspondances$(".item")document.querySelectorAll(".item")
Définir le texte$(el).text("Hi")el.textContent = "Hi"
Ajouter une classe$(el).addClass("on")el.classList.add("on")
Ajouter un écouteur$(el).on("click", fn)el.addEventListener("click", fn)
Insérer du HTML$(el).append("<p>x</p>")el.insertAdjacentHTML("beforeend", "<p>x</p>")
Trouver l'ancêtre le plus proche$(el).closest(".box")el.closest(".box")

Pour les nouveaux projets ciblant les navigateurs modernes, la colonne native suffit généralement. Consultez Les techniques de manipulation du DOM pour les patterns natifs.

Bonnes pratiques

  1. Maintenir jQuery à jour : Utilisez toujours la dernière version de jQuery pour bénéficier des améliorations de performances et des correctifs de sécurité.
  2. Utiliser un CDN : Servez jQuery depuis un réseau de diffusion de contenu (CDN) pour améliorer les temps de chargement et augmenter les chances qu'il soit mis en cache par le navigateur de l'utilisateur.
  3. Limiter l'usage de jQuery : N'utilisez jQuery que lorsqu'il apporte un avantage clair par rapport au JavaScript natif, surtout maintenant que les navigateurs modernes prennent en charge efficacement la plupart des opérations DOM standard.
  4. Chaîner les méthodes : Exploitez la capacité de jQuery à chaîner les méthodes pour un code plus concis et lisible.
  5. Optimiser les sélecteurs : Utilisez des sélecteurs spécifiques et efficaces pour minimiser les surcoûts de performance.

Conclusion

L'utilisation de bibliothèques comme jQuery pour la manipulation du DOM peut grandement améliorer votre flux de travail en développement web, offrant une syntaxe simplifiée, une compatibilité entre navigateurs et des fonctionnalités étendues. En suivant les bonnes pratiques, vous pouvez vous assurer que votre utilisation de ces bibliothèques est efficace, maintenable et productive. Tirez parti de la puissance des bibliothèques pour créer des applications web dynamiques et interactives avec facilité.

Pratique

Pratique
Lesquelles des affirmations suivantes sur les bibliothèques de manipulation du DOM sont vraies ?
Lesquelles des affirmations suivantes sur les bibliothèques de manipulation du DOM sont vraies ?
Was this page helpful?