Tableau récapitulatif des événements

Événement Description
click Clic de l'utilisateur sur un élément
dblclick Double clic de l'utilisateur sur un élément
mousedown Bouton de la souris enfoncé
mouseup Bouton de la souris relâché
mouseenter Souris entre dans un élément
mouseleave Souris quitte un élément
mousemove Mouvement de la souris
focus Élément reçoit le focus
blur Élément perd le focus
keydown Touche enfoncée
keypress Touche pressée (événement historique, aujourd'hui plutôt remplacé par keydown)
keyup Touche relâchée
input Valeur changée
change Valeur changée et perte de focus
submit Soumission de formulaire
resize Redimensionnement de la fenêtre
scroll Défilement de la page ou d'un élément
focusout Perte de focus (bubbling), se propage vers les ancêtres
focusin Réception de focus (bubbling), se propage vers les ancêtres
dragstart Début du glissement
drag Glissement de l'élément
dragend Fin du glissement
drop Dépôt de l'élément
// jQuery
const input = $('input[name="__"]');
const classe = $('.maclass');
const id = $('#monid');

id.on('click', function (e) {
  e.preventDefault();
});

input.on('click change', function (e) {
  e.preventDefault();
});

// Vanilla JS
window.addEventListener('resize', (e) => {
  console.log('Fenêtre redimensionnée', e.type);
});

const timer = setTimeout(() => {
  console.log('Timer terminé');
}, 200);

console.log('');
console.error('');

Prêt du DOM

// jQuery
$(document).ready(() => {
  console.log('DOM prêt côté jQuery');
});

// Vanilla JS
document.addEventListener('DOMContentLoaded', () => {
  console.log('DOM prêt côté Vanilla JS');
})

Console

Méthode Description
console.log('Bonjour') Affiche Bonjour ou une variable
console.error() Affiche un message d'erreur
console.warn() Affiche un avertissement
console.info() Affiche des informations générales
console.debug() Affiche des messages de débogage
console.clear() Efface la console
console.table() Affiche en tableau
console.time('toto') / console.timeEnd('toto') Arrête le compteur de temps et affiche le temps écoulé dans la console
console.group('toto') / console.groupEnd('toto') / console.groupCollapsed() Crée un groupe de messages dans la console, facilitant l'organisation
console.assert(false, 'Erreur : xxxx') Affiche un message d'erreur si l'assertion est fausse
console.count('toto') / console.countReset('toto') Affiche le nombre de fois que cette ligne a été appelée avec la même étiquette
console.trace() Affiche une trace de la pile d'exécution à l'endroit où elle est appelée
console.dir() Affiche un objet dans un format interactif, permettant d'explorer ses propriétés
// Afficher les résultats
console.log(`Loop 1 Time: ${loop1Time.toFixed(3)}ms`);

Correspondances jQuery ↔ Vanilla JS

Pour chaque besoin courant, voici l'équivalent moderne en JavaScript natif. Dans la plupart des cas, Vanilla JS suffit aujourd'hui — jQuery n'est plus indispensable.

Sélection d'éléments

// jQuery
$('#monid');            // par id
$('.maclass');          // par classe
$('input[name="x"]');   // par sélecteur CSS

// Vanilla JS
document.getElementById('monid');
document.querySelector('.maclass');       // le premier
document.querySelectorAll('input[name="x"]'); // tous (NodeList)

Contenu, valeurs et attributs

Besoin jQuery Vanilla JS
Texte el.text() el.textContent
HTML el.html() el.innerHTML
Valeur de champ el.val() el.value
Lire un attribut el.attr('href') el.getAttribute('href')
Écrire un attribut el.attr('href', '/x') el.setAttribute('href', '/x')
Data-attribute el.data('id') el.dataset.id
Propriété (checked…) el.prop('checked') el.checked

Classes et styles

// jQuery
el.addClass('actif');
el.removeClass('actif');
el.toggleClass('actif');
el.hasClass('actif');
el.css('color', 'red');

// Vanilla JS
el.classList.add('actif');
el.classList.remove('actif');
el.classList.toggle('actif');
el.classList.contains('actif');
el.style.color = 'red';

Créer, insérer, supprimer

// jQuery
const $node = $('<li>').text('Élément');
$('ul').append($node);
$node.remove();

// Vanilla JS
const node = document.createElement('li');
node.textContent = 'Élément';
document.querySelector('ul').append(node);
node.remove();

Parcours du DOM

Besoin jQuery Vanilla JS
Parent el.parent() el.parentElement
Ancêtre correspondant el.closest('.x') el.closest('.x')
Enfants el.children() el.children
Élément suivant el.next() el.nextElementSibling
Recherche interne el.find('.x') el.querySelectorAll('.x')

Délégation d'événements

Utile pour des éléments ajoutés dynamiquement : on écoute sur un ancêtre stable.

// jQuery
$('ul').on('click', 'li', function () {
  console.log('Clic sur', this.textContent);
});

// Vanilla JS
document.querySelector('ul').addEventListener('click', (e) => {
  const li = e.target.closest('li');
  if (li) console.log('Clic sur', li.textContent);
});

Requêtes AJAX

// jQuery
$.ajax({ url: '/api/data', method: 'GET' })
  .done((data) => console.log(data))
  .fail((err) => console.error(err));

// Vanilla JS (fetch + async/await)
try {
  const res = await fetch('/api/data');
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const data = await res.json();
  console.log(data);
} catch (err) {
  console.error(err);
}

Itérer sur une sélection

// jQuery
$('.item').each(function (index) {
  console.log(index, this);
});

// Vanilla JS
document.querySelectorAll('.item').forEach((el, index) => {
  console.log(index, el);
});

En résumé

  • La sélection (querySelector/querySelectorAll), les classes (classList) et fetch couvrent l'essentiel des usages historiques de jQuery.
  • querySelectorAll renvoie une NodeList : on la parcourt avec forEach, mais pour map/filter il faut d'abord la convertir ([...liste] ou Array.from(liste)).
  • jQuery garde son intérêt sur du code existant ou pour son écosystème de plugins ; pour un nouveau projet, le JavaScript natif suffit dans la grande majorité des cas.