Skip to Content

10.4 — Le monde sans jQuery

⏱️ TL;DR — Bootstrap 5 a supprimé jQuery. Le JS est réécrit en modules ES vanilla. Concrètement : on n’écrit plus $('#m').modal('show') mais new bootstrap.Modal('#m').show(). Les data-attributes passent de data-toggle (v4) à data-bs-toggle (v5). C’est plus léger, plus standard, et sans dépendance externe (hors Popper).

🎯 Objectifs

  • Traduire du code v4 (jQuery) en v5 (vanilla).
  • Connaître les changements de nommage.
  • Comprendre pourquoi ce choix.

Avant / après

// Bootstrap 4 (jQuery) $('#m').modal('show') $('.tip').tooltip() $('#m').on('shown.bs.modal', () => { … }) // Bootstrap 5 (vanilla) new bootstrap.Modal('#m').show() document.querySelectorAll('.tip').forEach(el => new bootstrap.Tooltip(el)) document.querySelector('#m').addEventListener('shown.bs.modal', () => { … })

Changements de nommage

v4v5
data-toggledata-bs-toggle
data-targetdata-bs-target
data-dismissdata-bs-dismiss
data-ridedata-bs-ride
.ml-* / .mr-*.ms-* / .me-* (start/end)
.pl-* / .pr-*.ps-* / .pe-*
.float-left / .float-right.float-start / .float-end
.text-left / .text-right.text-start / .text-end
.no-gutters.g-0
.badge-primary.text-bg-primary
.sr-only.visually-hidden
.custom-control (form)classes .form-* unifiées

Le passage left/rightstart/end prépare le support RTL (voir Partie 12).

Pourquoi supprimer jQuery ?

  • Poids : jQuery pesait ~30 ko gzip pour des fonctionnalités désormais natives (querySelectorAll, classList, fetch, addEventListener).
  • Standards : le DOM moderne rend jQuery superflu.
  • Interop : plus de conflit de versions jQuery, meilleure cohabitation avec React/Vue.

Sélecteurs et manipulation en vanilla

document.querySelector('.card') // $('.card') document.querySelectorAll('.item') // $('.item') el.classList.add('active') // .addClass('active') el.classList.toggle('d-none') // .toggleClass('d-none') el.addEventListener('click', fn) // .on('click', fn)

⚠️ Piège — Migrer un projet v4→v5 sans mettre à jour les data-attributes : data-toggle="modal" (v4) ne fait rien en v5, il faut data-bs-toggle="modal". C’est la cause n°1 des « composants qui ne réagissent plus » après migration.

💡 Pour un dev React — L’abandon de jQuery est une bonne nouvelle : plus de manipulation directe du DOM qui entre en conflit avec le virtual DOM de React. Le JS vanilla de Bootstrap reste toutefois impératif ; dans React, react-bootstrap reste préférable.

✏️ Exercices

  1. Traduire $('#t').tab('show') en Bootstrap 5.

✅ Solution

new bootstrap.Tab('#t').show().

  1. Un composant migré de v4 ne réagit plus. Quelle vérification en premier ?

✅ Solution

Vérifier que les data-attributes sont bien préfixés data-bs-* (et non data-*).

🧠 Quiz de révision

1. Bootstrap 5 dépend-il de jQuery ?

Non — JS vanilla (modules ES).

2. data-toggle devient quoi en v5 ?

data-bs-toggle.

3. .ml-3 devient quoi en v5 ?

.ms-3 (margin-start).

4. Pourquoi start/end au lieu de left/right ?

Pour préparer le support RTL.

5. .sr-only devient quoi ?

.visually-hidden.


🎉 Fin de la Partie 10 ! Partie suivante : Partie 11 — Bootstrap avec React & Next.js