Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

💲 jQuery – "Write Less, Do More"

Guide complet IDEO-Lab : Sélecteurs, DOM, CSS, Événements, Effets & AJAX.

1.1 Facile

Vue d'ensemble

Bibliothèque JS (pas un framework). "Write Less, Do More".

Bibliothèque DOM
1.2 Facile

Pourquoi jQuery ? (Historique)

Abstrait les incompatibilités navigateurs (IE, Netscape).

Cross-browser IE6
1.3 Facile

Installation (CDN & npm)

<script> (CDN) ou npm install jquery. Versions (slim/full).

CDN npm
1.4 Facile

$(document).ready()

Le point d'entrée. Attendre que le DOM soit chargé. $().

$(document).ready $()
2.1 Facile

Sélecteurs $()

Le cœur de jQuery. $("#id"), $(".class"), $("p").

$() Sélecteurs CSS
2.2 Moyen

DOM Traversal (Parcours)

.find(), .parent(), .next(), .children(), .closest().

.find() .parent()
2.3 Facile

DOM Get/Set (Contenu)

.html(), .text() (Contenu), .val() (Formulaires).

.html() .val()
2.4 Facile

DOM Manipulation

.append(), .prepend(), .remove(), .attr().

.append() .remove()
3.1 Facile

CSS (Styles)

Lecture et écriture de styles inline avec .css().

.css() Styles
3.2 Facile

CSS (Classes)

.addClass(), .removeClass(), .toggleClass().

.addClass() .toggleClass()
3.3 Facile

Événements (.on())

.on('click', ...). (Anciennement .click(), .hover()).

.on() click
3.4 Moyen

Événements (Délégation)

Gestion des éléments futurs/dynamiques. .on(e, sel, fn).

Délégation AJAX
4.1 Facile

Effets & Animations

.hide(), .fadeIn(), .slideDown(), .animate().

.hide() .animate()
4.2 Facile

Chaining (Chaînage)

L'API "fluide". $(...).find(...).addClass(...).

Chaining Fluent API
4.3 Moyen

📡 AJAX ($.ajax)

La méthode $.ajax() (complète) pour les requêtes HTTP.

$.ajax AJAX
4.4 Facile

📡 AJAX (Raccourcis)

$.get(), $.post(), $.getJSON() pour les cas simples.

$.get() $.post()
5.1 Facile

Vitrine (Qui l'utilise ?)

WordPress, Drupal, Magento. (Legacy : GitHub, Stack Overflow).

WordPress CMS
5.2 Facile

Liens Utiles

Documentation (API), Centre d'apprentissage, CDN.

API Docs Formation
5.3 Moyen

jQuery vs Vanilla JS (ES6+)

$() vs querySelector. $.ajax vs fetch.

Vanilla JS fetch
5.4 Facile

Cheat-sheet

Syntaxe des sélecteurs, événements et AJAX.

cheat Sélecteurs
1.1 Vue d'ensemble : "Write Less, Do More"
Qu'est-ce que jQuery ?

jQuery est une **bibliothèque (library)** JavaScript, rapide, petite et riche en fonctionnalités. Ce n'est *pas* un framework (comme React ou Vue).

Son slogan était : **"Write Less, Do More"** (Écrire moins, pour en faire plus).

Son objectif principal est de simplifier radicalement :

  • La manipulation du DOM (HTML).
  • La gestion des événements (clics, etc.).
  • Les animations.
  • Les requêtes AJAX (Appels réseau).
Flux de travail (Simplifié)

L'idée de jQuery est de "wrapper" (envelopper) les éléments du DOM dans un objet spécial (l'objet jQuery, $) qui expose des méthodes simples et puissantes.

// 1. Sélectionner un élément (via CSS)
const monElement = $("#mon-id");

// 2. Agir dessus (ex: cacher)
monElement.hide();

// 3. Agir (ex: ajouter une classe)
monElement.addClass("actif");

// 4. Écouter (ex: clic)
monElement.on("click", function() {
    console.log("Clic !");
});
1.2 Pourquoi jQuery a-t-il été créé ? (Contexte)
Le Problème (La "Guerre des Navigateurs")

Dans les années 2000, (Internet Explorer 6/7/8, Firefox, Netscape, Opera) implémentaient JavaScript de manière **incompatible**.

Pour faire la *même chose* (ex: un appel AJAX ou ajouter un événement), il fallait écrire du code différent pour chaque navigateur. C'était un cauchemar.

// (Exemple: Ajouter un événement en "Vanilla JS" ancien)

if (element.addEventListener) {
    // Navigateurs modernes (W3C)
    element.addEventListener("click", maFonction, false);
} else if (element.attachEvent) {
    // Internet Explorer (non-standard)
    element.attachEvent("onclick", maFonction);
} else {
    // Très vieux...
    element.onclick = maFonction;
}
La Solution (Une API unifiée)

jQuery (créé par John Resig en 2006) a fourni une **couche d'abstraction**.

Le développeur n'écrivait qu'une seule ligne (simple), et jQuery s'occupait de détecter le navigateur et d'exécuter le "mauvais" code (addEventListener, attachEvent, etc.) à sa place.

// (L'équivalent avec jQuery)

// Fonctionne sur TOUS les navigateurs,
// y compris IE6.
$("#mon-element").on("click", maFonction);

// (jQuery gérait aussi les différences
// sur la sélection (getElementById vs...),
// les animations, et surtout AJAX (XHR))
1.3 Installation (CDN, npm & Vérification)
CDN (Content Delivery Network)

C'est la méthode la plus simple. Placer la balise <script> à la fin du <body>, avant votre propre script.




  

npm / Local (Pour les build tools)

Si vous utilisez un "bundler" (Webpack, Vite, Rollup), vous installez jQuery via npm.

# 1. Installer via npm
npm install jquery

# 2. Importer dans votre JS (main.js)
import $ from 'jquery';
// ou (si type="module" n'est pas géré)
// const $ = require('jquery');

// (Désormais $ est disponible dans votre module)
$(function() {
    console.log("jQuery importé via npm !");
});
Vérification

Comment savoir si jQuery est bien chargé sur la page ?

// 1. Dans la console du navigateur
window.jQuery
// ou
$

// (Si jQuery est chargé, cela retournera la fonction jQuery)
// (Si undefined, il y a une erreur de chargement)

// 2. Vérifier la version
if (window.jQuery) {
    console.log("jQuery version: " + $.fn.jquery);
} else {
    console.error("jQuery n'est pas chargé !");
}
1.4 Le Point d'Entrée : $(document).ready()

$(document).ready() est un "wrapper" qui garantit que votre code ne s'exécutera que lorsque le **DOM est prêt** (HTML chargé), sans attendre les images (contrairement à window.onload).

Syntaxe (Longue)
// (Dans app.js)
$(document).ready(function() {
    // (Tout votre code jQuery va ici)
    console.log("Le DOM est prêt !");
    $("#mon-bouton").on("click", function() { alert("Clic !"); });
});
Syntaxe (Raccourci) (Recommandée)

Ce raccourci est le plus courant :

// (Dans app.js)
$(function() {
    // (C'est l'exact équivalent de $(document).ready())
    console.log("Le DOM est prêt (raccourci) !");
});
2.1 Le Sélecteur $()

Le $ (alias de jQuery) est le cœur de la bibliothèque. C'est une fonction qui "sélectionne" des éléments du DOM en utilisant la syntaxe des **sélecteurs CSS**.

Elle retourne un "objet jQuery" (une collection d'éléments).

// 1. Sélection par ID
const titre = $("#main-title"); // (Un seul élément)

// 2. Sélection par Classe
const items = $(".list-item"); // (Plusieurs éléments)

// 3. Sélection par Tag (Type)
const paragraphes = $("p");

// 4. Sélection complexe (CSS)
const premierItem = $("ul.ma-liste > li:first-child");

// 5. Sélection multiple
const inputs = $("input, textarea, select");

// 6. Sélecteurs jQuery (non-CSS)
const inputsActifs = $(":input:enabled");
const headers = $(":header"); // (h1, h2, h3...)
2.2 DOM Traversal (Parcourir le DOM)

Une fois un (ou plusieurs) élément(s) sélectionné(s), on peut "naviguer" dans le DOM par rapport à cet élément.

// (On part de l'élément cliqué)
$("button").on("click", function() {
    
    // 'this' est le bouton cliqué
    // $(this) "l'enveloppe" en objet jQuery
    const $btn = $(this);
    
    // 1. Trouver un enfant (ex: une icône )
    const $icon = $btn.find("i");
    
    // 2. Trouver l'élément 'parent'
    const $parentDiv = $btn.parent();
    
    // 3. Trouver le parent le plus proche (ex: un formulaire)
    const $form = $btn.closest("form");
    
    // 4. Trouver l'élément "frère" (sibling) suivant
    const $nextEl = $btn.next();
    
    // 5. Trouver tous les frères
    const $siblings = $btn.siblings(".une-classe");
    
    // (Ex: Mettre en surbrillance le form)
    $form.css("border", "1px solid red");
});
2.3 DOM Get/Set (Contenu & Valeurs)

jQuery utilise les mêmes fonctions pour lire (GET) et écrire (SET) des propriétés. Si on passe un argument, c'est un SET. Si on n'en passe pas, c'est un GET (sur le 1er élément de la collection).

.html() (Contenu HTML)
// GET (Lecture)
const contenuHtml = $("#mon-div").html();
// SET (Écriture)
$(".alerte").html("Erreur !");
.text() (Contenu Texte)
// GET
const contenuTexte = $("#mon-div").text();
// SET
$(".alerte").text("Erreur !"); // (Sécurisé, encode le HTML)
.val() (Formulaires)
// GET (Valeur d'un input, select, textarea)
const nomUtilisateur = $("#input-nom").val();
// SET
$("#input-nom").val("Valeur par défaut");
2.4 Manipulation (Ajout, Suppression & Attributs)
Ajout & Suppression
const $liste = $("ul#ma-liste");
const $element = $("li.item-3");

// 1. Ajouter (à l'intérieur)
$liste.append("
  • Item 4
  • "); // (Ajoute à la fin) $liste.prepend("
  • Item 0
  • "); // (Ajoute au début) // 2. Ajouter (à l'extérieur) $liste.before("
    "); // (Avant l'UL) $liste.after("
    "); // (Après l'UL) // 3. Supprimer $element.remove(); // (Supprime l'Item 3) // 4. Vider $liste.empty(); // (Supprime les enfants de l'UL)
    Attributs (.attr())
    const $lien = $("a#mon-lien");
    const $img = $("img");
    
    // GET
    const url = $lien.attr("href");
    const alt = $img.attr("alt");
    
    // SET (1 attribut)
    $lien.attr("href", "https://nouveau-lien.com");
    
    // SET (Multiples attributs)
    $img.attr({
        src: "image.png",
        alt: "Texte alternatif",
        title: "Titre"
    });
    
    // Supprimer un attribut
    $img.removeAttr("title");
    
    3.1 CSS : Gérer les Styles (.css())

    La méthode .css() permet de lire ou modifier les styles CSS "inline" d'un élément (ce qui est dans l'attribut style="...").

    Note : Il est généralement préférable d'utiliser des classes (voir 3.2) plutôt que de manipuler les styles directement.

    1. GET (Lire un style)
    // (Retourne la valeur *calculée* par le navigateur)
    const couleur = $("h1").css("color");
    const fontSize = $("h1").css("font-size");
    
    console.log(couleur); // ex: "rgb(51, 51, 51)"
    
    2. SET (Écrire des styles)
    // SET (1 propriété)
    // (Utiliser camelCase pour les propriétés composées)
    $("h1").css("backgroundColor", "#f0f0f0");
    
    // SET (Multiples propriétés, via objet)
    $("h1").css({
        "font-size": "24px", // (Avec quotes)
        fontWeight: "bold", // (Sans quotes si camelCase)
        "border-bottom": "1px solid blue"
    });
    
    3.2 CSS : Gérer les Classes

    La **meilleure pratique** pour modifier l'apparence d'un élément est de modifier ses classes CSS (définies dans votre fichier .css) plutôt que ses styles inline.

    .addClass() (Ajouter)
    // (CSS: .menu-ouvert { background: blue; })
    $("#menu").addClass("menu-ouvert");
    
    // (Ajouter plusieurs classes)
    $("#menu").addClass("menu-ouvert transition");
    
    .removeClass() (Supprimer)
    $("#menu").removeClass("transition");
    
    .toggleClass() (Basculer)

    Ajoute la classe si elle est absente, la supprime si elle est présente. Parfait pour les menus, les "likes", etc.

    $("#bouton-menu").on("click", function() {
        $("#menu").toggleClass("menu-ouvert");
    });
    
    .hasClass() (Vérifier)
    if ($("#menu").hasClass("menu-ouvert")) {
        // ...
    }
    
    3.3 Gestion des Événements (.on())

    .on() est la méthode universelle (depuis jQuery 1.7) pour lier des événements (click, mouseenter, submit, keydown...).

    Cette modal couvre la **Liaison Directe** (sur les éléments qui existent au chargement de la page).

    Syntaxe
    // 1. Événement 'click'
    $("#mon-bouton").on("click", function(event) {
        // Annuler le comportement par défaut (ex: submit)
        event.preventDefault();
        
        // 'this' est l'élément DOM (le bouton)
        // $(this) est l'objet jQuery du bouton
        $(this).text("Cliqué !");
    });
    
    // 2. Événement 'submit' (sur un formulaire)
    $("#mon-form").on("submit", function(e) {
        e.preventDefault(); // Empêche le rechargement de la page
        const data = $(this).serialize(); // (Helper jQuery pour formulaires)
        console.log(data);
    });
    
    // 3. Événements multiples
    $("#mon-input").on("focus blur", function() {
        $(this).toggleClass("input-focus");
    });
    
    3.4 Événements (Délégation)

    Problème : Si vous ajoutez un élément (

  • ) à une liste (
      ) *après* avoir lié les événements, le nouvel
    • ne réagira pas au clic.

      Solution (Délégation) : On écoute sur un parent (ex:

        ) qui *existe déjà*, et on "filtre" pour les enfants (
      • ) qui déclenchent l'événement.

        Syntaxe : .on(evenement, selecteur, fonction)
        // (HTML: 
          ...
        // ) // 1. Liaison DÉLÉGUÉE // (On écoute sur #ma-liste... // ...pour les clics... // ...provenant d'un
      • ) $("#ma-liste").on("click", "li", function() { // 'this' est le
      • cliqué $(this).remove(); }); // 2. Le code qui ajoute des éléments $("#ajouter").on("click", function() { // Cet item sera cliquable, // grâce à la délégation ! $("#ma-liste").append("
      • Nouvel item (cliquable)
      • "); });
  • 4.1 Effets & Animations
    Effets (show/hide, slide, fade)

    Méthodes simples pour les animations courantes.

    const $box = $("#ma-boite");
    
    // Cacher (instantané)
    $box.hide();
    // Afficher (instantané)
    $box.show();
    
    // Cacher/Afficher (en 400ms)
    $box.toggle(400); 
    
    // Slide (ex: accordeon)
    $("#menu").slideToggle(200);
    
    // Fondu (ex: alerte)
    $("#alerte").fadeOut(1000, function() {
        // (Callback: exécuté à la fin)
        $(this).remove();
    });
    
    .animate()

    Pour animer des propriétés CSS numériques.

    $("#mon-bloc").on("click", function() {
        $(this).animate(
            {
                // Propriétés CSS
                opacity: 0.25,
                left: "+=50px", // Relatif
                height: "toggle"
            }, 
            1000, // Durée
            function() {
                // Callback (fin)
                console.log("Animation finie !");
            }
        );
    });
    
    4.2 Chaining (L'API "Fluide")

    La plupart des méthodes jQuery (manipulation, effets) retournent l'objet jQuery lui-même. Cela permet le "chaînage" (chaining) : appeler des méthodes les unes après les autres sur le même set d'éléments.

    Avec Chaining (Concise)
    $("#menu")
        .addClass("actif")
        .slideDown(500)
        .css("background-color", "blue");
        
    // (Attention: les méthodes "Getters"
    // (ex: .html(), .css('color'))
    // cassent la chaîne car elles retournent
    // une valeur (string, number...))
    
    .end() (Remonter la chaîne)

    .end() permet de remonter dans la chaîne (ex: revenir au parent après un .find()).

    $("#liste")
        .find("li") // (La sélection est maintenant 
  • ) .addClass("item") .end() // (La sélection redevient #liste) .addClass("liste-init");
  • 4.3 📡 AJAX : La méthode $.ajax()

    jQuery a révolutionné AJAX en masquant la complexité de XMLHttpRequest (cross-browser).

    $.ajax() est la méthode "couteau-suisse" qui gère tout (GET, POST, etc.) via un objet de configuration. Elle retourne un objet "Deferred" (similaire à une Promise).

    Exemple (POST avec .done/.fail)
    const userData = { nom: "Alice", id: 123 };
    
    const request = $.ajax({
        url: "/api/users/update",
        type: "POST", // (ou "GET", "PUT", "DELETE")
        data: JSON.stringify(userData), 
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });
    
    // (Style Promise)
    request.done(function(response) {
        console.log("Succès:", response);
    });
    
    request.fail(function(xhr, status, error) {
        console.error("Échec:", error);
    });
    
    request.always(function() {
        console.log("Requête terminée.");
    });
    
    4.4 📡 AJAX : Raccourcis ($.get, $.post)

    Pour les cas simples (GET, POST), jQuery fournit des raccourcis très pratiques.

    $.get() & $.getJSON()
    // Raccourci pour $.ajax({ type: "GET", dataType: "json" })
    // $.get(URL, [data], [callback_succes], [dataType]);
    
    $.getJSON("/api/user/5", function(data) {
        // (Callback de succès, data est déjà parsée)
        console.log("Utilisateur:", data.nom);
    });
    
    // (Version GET avec .done() (style Promise))
    $.get("/api/user/5")
        .done(function(data) {
            console.log("Utilisateur:", data.nom);
        })
        .fail(function() {
            console.error("Erreur de chargement user");
        });
    
    $.post()
    // $.post(URL, [data], [callback_succes], [dataType]);
    
    const formData = { nom: "Bob" };
    
    $.post("/api/users/create", formData)
        .done(function(response) {
            console.log("Utilisateur créé:", response.id);
        });
    
    5.1 Vitrine (Qui utilise jQuery ?)

    jQuery est encore (en 2024-2025) la bibliothèque JavaScript la plus utilisée sur le web, principalement en raison de son inclusion massive dans les CMS et les thèmes "legacy".

    Plateforme / SiteUsage
    WordPressLe "backend" (Admin Dashboard) de WordPress dépend massivement de jQuery. La plupart des thèmes et plugins l'utilisent.
    Drupal / Joomla!Similaire à WordPress, ces CMS l'utilisent pour la manipulation du DOM dans leurs back-offices et thèmes.
    Magento (Adobe Commerce)La plateforme e-commerce utilise jQuery et jQuery UI pour de nombreuses interactions front-end.
    Stack Overflow(Legacy) Le site a été construit sur jQuery. (Ils migrent progressivement vers du JS natif).
    GitHub(Legacy) Utilisait intensivement jQuery. (Migre/a migré vers des Web Components et du JS natif).
    5.3 jQuery vs "Vanilla JS" (ES6+)

    "jQuery est-il mort ?" Non, mais il est **moins nécessaire**. Les navigateurs modernes (ES6+) ont adopté des API simples, standardisées, inspirées par jQuery.

    Le JavaScript "Vanilla" (natif) est désormais souvent plus performant et ne nécessite pas de charger une bibliothèque de 30ko (minifiée/gzippée).

    TâchejQueryJavaScript (ES6+ "Vanilla")
    Sélecteur$("#id")document.querySelector("#id")
    Sélecteurs Multiples$(".item")document.querySelectorAll(".item")
    Ajouter Classe$el.addClass("foo")el.classList.add("foo")
    Changer HTML$el.html("...")el.innerHTML = "..."
    Événement$el.on("click", fn)el.addEventListener("click", fn)
    AJAX (GET)$.get(url, fn)fetch(url).then(r => r.json()).then(fn)
    5.4 Cheat-sheet (jQuery)
    Sélecteurs & Parcours
    // Wrapper (attendre le DOM)
    $(function() {
        // ... code ici ...
    });
    
    // Sélecteurs
    const $el = $("#id");
    const $els = $(".class");
    
    // Parcours
    $el.find(".enfant");
    $el.parent();
    $el.closest("form");
    $el.next(); // Frère suivant
    
    Manipulation & CSS
    // Get/Set
    $el.html("Contenu");
    $el.val("Input val");
    $el.attr("href", "url");
    
    // CSS
    $el.css("color", "red");
    $el.addClass("foo");
    $el.removeClass("bar");
    $el.toggleClass("baz");
    $el.hide(500);
    
    Événements & AJAX
    // Événement (Direct)
    $el.on("click", function(e) {
        e.preventDefault();
        $(this); // L'élément cliqué
    });
    
    // Événement (Délégué)
    $("ul").on("click", "li", function() {
        // ...
    });
    
    // AJAX (GET)
    $.getJSON("/api/data", data => {
        console.log(data);
    });
    
    // AJAX (POST)
    $.post("/api/save", { id: 1 }, res => {
        console.log(res);
    });
    
    // AJAX (Complet)
    $.ajax({
        url: "/api/delete",
        type: "DELETE",
    }).done(() => {}).fail(() => {});