
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âŠ
Mise en place
- télécharger la librairie
- par exemple avec
npm install jquery, ce qui installe jQuery dans le dossier ânode_modulesâ Ă lâintĂ©rieur duquel on retrouve notamment la librairie dĂ©compressĂ©e (node_modles/jquery/dist/jquery.min.js)
- par exemple avec
- possibilitĂ© dâutiliser plutĂŽt un CDN (content delivery network)
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â).
document.getElementById("monId").
Ă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.
- événements liés à la souris :
click(),dbclick(),mouseenter(),mouseleave(),hover()...
- événements liés au clavier :
keypresss(),keydown(),keyup()...
- événement liés à un formulaire :
submit(),change(),focus(),blur()...
- Ă©vĂ©nements liĂ©s au document ou Ă la fenĂȘtre :
ready(),load(),resize(),scroll(),unload()...
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 !
jQuery met Ă disposition un objet $.ajax tel que $.ajax( configuration ) .done(...) .fail(...) .always(...):
- la configuration initiale oĂč on spĂ©cifie lâurl (serveur, APIâŠ), selon la requĂȘte on peut envoyer des donnĂ©es, et enfin la mĂ©thode (POST, GETâŠ)
- on peut lui ajouter une ou plusieurs fonctions qui vont ĂȘtre exĂ©cutĂ©es
- tout sâest bien passĂ© : fonction
.done()
- ça nâa pas marchĂ© : fonction
.fail()
- dans tous les cas, on peut appeler
.always()(Ă©quivalente du finally dans un tryâŠcatch)
Elles prennent diffĂ©rents paramĂštres : donnĂ©es, statut, xhr (la requĂȘte en elle-mĂȘme)âŠ
- tout sâest bien passĂ© : fonction
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 });