📘

JQuery

BibliothĂšque JavaScript open-source qui simplifie considĂ©rablement l’utilisation de JavaScript dans les sites web : - manipulation de la DOM HTML - manipulation de sĂ©lecteurs CSS - gestion des Ă©vĂ©nements HTML - effets et animations - AJAX - des plugins complĂ©mentaires disponibles

⚙
Outils : https://jquery.com/
📌
Pour aller plus loin : https://api.jquery.com/ (documentation) https://www.w3schools.com/jquery/jquery_intro.asp
⚠
Actuellement la librairie JavaScript la plus utilisée, son implémentation dans les nouveaux projets se fait de plus en plus rare.

Mise en place

â„č
L’un des avantages d’utiliser un CDN est un gain de performance sur la rapiditĂ© de chargement de la librairie : 1. le fichier sera tĂ©lĂ©chargĂ© Ă  partir du serveur le plus proche gĂ©ographiquement, 2. si l’utilisateur a dĂ©jĂ  une copie du fichier issue du mĂȘme CDN, alors cette copie sera utilisĂ©e Ă  partir du cache (et non tĂ©lĂ©chargĂ©e).

Ajout au fichier HTML

Dans la section <head>, on rĂ©fĂ©rence la librairie dans une balise <script>, en indiquant avec l’attribut src soit le chemin du fichier soit l’adresse CDN.

<head>
	<script src="jquery-3.6.3.min.js"></script>
</head>
BP : Il est recommandĂ© de placer la librairie dans le rĂ©pertoire du projet, avec les fichiers HTML qui l’appellent.

Utiliser jQuery


On reconnait son utilisation soit au mot-clé JQuery soit au symbole $.

La syntaxe basique est : $(selector).action()

avec le dollar qui permet d’accĂ©der Ă  jQuery,

l’appel du sĂ©lecteur qui permet de “trouver” l’élĂ©ment HTML que l’on souhaite utiliser,

l’appel d’une mĂ©thode jQuery qui permet d’effectuer une action sur cet Ă©lĂ©ment.

Sélecteurs CSS

Il est possible d’utiliser tous les sĂ©lecteurs CSS avec jQuery(selector) ou $(selector).

La notation CSS est respectĂ©e, avec notamment l’appel simple des Ă©lĂ©ments du DOM (”body”, “p”, “div”
), l’appel des classes avec un point (”.class”), l’appel des identifiants uniques avec un sharp (”#id”), l’appel des pseudo-classes avec deux-points (”:first-child”), l’appel des pseudo-Ă©lĂ©ments avec deux fois deux-points (”::after”).
â„č
Cette notation simplifie et remplace le document.getElementById("monId").
📌
Pour aller plus loin : https://www.w3schools.com/jquery/jquery_ref_selectors.asp

ÉvĂ©nements

La gestion des Ă©vĂ©nements est Ă©galement simplifiĂ©e : la plupart sont gĂ©rĂ©s dans des mĂ©thodes du mĂȘme nom.

Une fois un événement lié à un élément HTML, des instructions lui sont données à travers une fonction : $("p").click(function() { instructions });.

Une syntaxe Ă©quivalente utilise la fonction on() qui s’applique sur le nom de l’évĂ©nement et la fonction Ă  utiliser : $("p").on("click", function() { instructions });.

Elle permet Ă©galement de lier plusieurs Ă©vĂ©nement Ă  un mĂȘme Ă©lĂ©ment, listĂ©s avec des accolades :

$("p").on({
  hover: function(){ instructions },
  click: function(){ instructions },
  dbclick: function(){ instructions }
});

Il est possible d’annuler le comportement par dĂ©faut d’un Ă©vĂ©nĂ©ment avec : event.preventDefault().

L’évĂ©nĂ©ment document ready

Toutes les fonctionnalitĂ©s créées avec jQuery sont gĂ©nĂ©ralement regroupĂ©es au sein de l’évĂ©nement $(document).ready(function(){ toutes mes instructions jQuery });, qui s’assure que le document soit entiĂšrement et correctement chargĂ© avant de lancer le code jQuery.

Méthodes disponibles

Pour manipuler les éléments :

// manipuler un element
let unElement = $(selecteur);
unElement.html();
unElement.text();
unElement.attr();
unElement.width();
unElement.height();
unElement.val();
unElement.css();
unElement.addClass();
unElement.removeClass();

// manipuler une collection d'elements
let desElements = $(selecteur);
desElements.each(function() {
	console.log($(this).text());
})

Les mĂ©thodes sont Ă  la fois getter et setter ! Il suffit d’ajouter un paramĂštre pour modifier la valeur de l’élĂ©ment.

let h = $("#zone").height(120); // setter
h = $("#zone").height(); // getter

Pour créer, ajouter et supprimer des éléments :

// creer un element
let maDiv = $("<div>une nouvelle div</div>");
let monBouton =
    $("<button/>", {
        html: "Valider",
        class: "mon-btn"
    });
let unAutreBouton = monBouton.clone();

// ajouter un element dans le HTML
// - dans un sens...
monNouvelElement.insertAfter(unElementExistant);
monNouvelElement.insertBefore(unElementExistant);
monNouvelElement.appendTo(unElementExistant);
monNouvelElement.prependTo(unElementExistant);
// - ... ou dans l'autre
unElementExistant.after(monNouvelElement);
unElementExistant.before(monNouvelElement);
unElementExistant.append(monNouvelElement);
unElementExistant.prepend(monNouvelElement);

// supprimer un element
unElement.remove();
unElement.empty();
unElement.detach();

MĂ©thodes utilitaires de l’objet racine (dĂ©signĂ© avec $) :

// en vrac
$.trim("chaĂźne de caractĂšres");

$.each(tableau, function(index, valeur) {...});
$.each(objet, function(propriete, valeur){...});

$.inArray(valeurARechercher,tableau);

$.data(element, cle, valeur);
let valeur = $.data(element, cle);

$.isNumeric(valeur);

AJAX

Asynchronous JavaScript and XML.

AJAX permet de recharger une partie de la page sans avoir Ă  tout recharger. —> Ă©norme Ă  l’époque !

â„č
En comparaison, PHP oblige le rechargement de la page (un des points négatifs).
📌
Pour aller plus loin : https://www.w3schools.com/jquery/jquery_ref_ajax.asp

jQuery met Ă  disposition un objet $.ajax tel que $.ajax( configuration ) .done(...) .fail(...) .always(...):

Le fonctionnement un peu asynchrone : on sait pas exactement quand la mĂ©thode .done() va s’exĂ©cuter.

$.ajax(
    // configuration
    {
    url: uneURL,
    [data: dataAEnvoyer,]
    method: "POST|GET|PUT|DELETE"
    })
    // traitement du resultat
    .done(function(data, status, xhr) { instructions })
    .fail(function(xhr, status, errorThrown) { instructions })
    .always(function(data, xhr, errorThrown) { instructions });