version 1.1.3, dernière mise à jour le 17 octobre 2018.
jQuery est une bibliothèque JavaScript
qui a pour but de soulager le développeur des tâches fastidieuses de gestion de compatibilité inter-navigateurs, ainsi que de lui fournir des effets classiques « clef en main ». Une fonction incontournable de cette bibliothèque est la fonction $
, qui a de multiples usages comme nous allons le voir. Le but de ce chapitre n'est pas de donner une liste détaillée de toutes les propriétés et méthodes définies par cette bibliothèque. Le site officiel de jQuery le fait bien plus complètement ; il s'agit simplement de fournir les bases permettant de saisir le principe de fonctionnement de la bibliothèque.
Pour commencer, il faut évidemment télécharger la bibliothèque, qui est disponible sur le site officiel. Il suffit ensuite de l'incorporer à l'aide d'un élément script
dans l'entête du document HTML
:
<script type="text/javascript" src="CheminRelatifVersLeFichierjQuery.js">
</script>
Le script doit être présent sur le serveur afin de limiter les risques de rejet du code lié à la protection contre les scripts inter-domaines.
Il est usuel d'utiliser l'événement load
sur l'élément body
pour ne lancer un script que lorsque l'on est sûr que l'intégralité du DOM a été chargée, ou, mieux, de ne lancer un gestionnaire qu'une fois que le DOM de la page a été chargé : document.addEventListener("DOMContentLoaded", gestionnaire, false);
. jQuery offre une méthode plus souple, à l'aide de la méthode ready :
$(document).ready(GestionnaireALancer) ;
On peut ainsi écrire...
$(document).ready(function(){...}) ;
... ou...
$(document).ready(Gestionnaire) ;
function Gestionnaire(evt)
{
...}
Il suffit de placer cette ligne de code entre les balises <script>
et </script>
dans l'entête du document HTML
.
jQuery
est très utile en combinaison avec des extensions, ou plugins. Il en existe de toutes sortes, disponibles sur le site officiel des plugins, où des démonstrations sont possibles. Avant de réaliser un effet, il est souvent judicieux de vérifier s’il n’existe pas déjà un plugin qui permet de le réaliser, souvent avec des options attractives.
Pour utiliser un plugin, il suffit de charger au préalable la bibliothèque, puis le fichier JavaScript
de l’extension.
La fonction $
permet de sélectionner directement des éléments à l’aide de la syntaxe CSS
:
$("#ident")
sélectionne l'élément d'identifiant ident
; c'est donc l'équivalent d'un document.getElementById("ident")
en plus court
$("nomÉlément")
sélectionne les éléments portant un nom donné. Par exemple, $("p")
sélectionne tous les éléments p
du document. Il s'agit toujours d'un tableau à une dimension (même s’il n’y a qu’un seul élément dans le document) : par exemple, $("h2")[1]
cible le deuxième élément h2
du document.
$(".truc")
sélectionne les éléments portant la classe truc
, c'est-à-dire tous ceux pour lesquels l'attribut class
vaut truc
. De même, $(".truc.machin")
sélectionne les éléments portant les classes truc
et
machin
.
$("*")
sélectionne tous les éléments.
Il est possible d'indiquer plusieurs sélecteurs, à la manière des CSS
: $(".truc, div, #machin")
sélectionne tous les éléments de classe truc
, tous les éléments div
et l'élément d'identifiant machin
.
Remarque : la plupart du temps, on obtient un tableau. Sa taille est évidemment disponible grâce à la propriété length
. Par exemple, $("p").length
permet de connaître le nombre de paragraphes dans un document.
:first
sélectionne le premier élément d'une collection, :last
le dernier. Par exemple, $(".truc:last")
sélectionne le dernier élément de classe truc
dans le document.
:not(selecteur)
permet de retirer de la sélection tous les éléments spécifiés. Par exemple, $(".truc:not(.machin)")
permet de sélectionner tous les éléments de classe truc
ne possédant pas la classe machin
.
:header
sélectionne tous les titres (h1
, h2
, etc.)
:odd
et :even
sélectionne tous les éléments d'ordre respectivement impair et pair d'une collection. Par exemple, $(tr:even)
sélectionne les lignes de tableau n°0, 2, 4, etc.
contains(texte)
sélectionne tous les éléments contenant un texte donné (par exemple $("p:contains(’test’)")
cible tous les paragraphes contenant le texte "test".
has(sélecteur)
sélectionne les éléments contenant au moins un élément sélectionné par sélecteur
. Par exemple, $("li:has(ul)")
sélectionne les éléments d'item de liste (li
) contenant au moins une liste.
:empty
sélectionne les éléments vides.
:visible
sélectionne les éléments qui sont visibles
:hidden
sélectionne les éléments qui ont été cachés (voir ci-après)
[attribut]
sélectionne les éléments possédant l'attribut attribut
. Par exemple, $("img[longdesc]")
sélectionne les éléments img
possédant un attribut longdesc
.
[attribute=valeur]
sélectionne les éléments possédant un attribut attribut
valant valeur
. Par exemple, $("td[colspan=2]")
sélectionne les cellules de tableaux s'étendant sur deux colonnes.
Les événements de la spécification du DOM sont baptisés simplement en enlevant le préfixe on
de l'attribut HTML
correspondant : on obtient alors l'événement click
associé au clic de la souris. Pour gérer un événement, on utilise la méthode on
, appliquée à un objet de type jQuery (renvoyé par la fonction $
), et qui peut prendre trois paramètres :
une chaîne de caractères indiquant l'événement à détecter ;
une chaîne de caractères précisant éventuellement des éléments descendats (voir ci-après) ;
le nom d'une fonction à appeler quand l'événement est déclenché (ce nom doit être écrit sans parenthèses).
On écrira par exemple $("p").on("mouseover", "", survol)
pour lancer la fonction survol
quand la souris passe au-dessus des paragraphes, et $("p").on("mouseover", "em", survol)
pour ne la lancer qu'au passage des éléments em
dans les paragraphes.
On retire un gestionnaire d'événement avec la méthode off
appelée avec les mêmes paramètres que le on
qui avait servi à l'associer. Ici par exemple, on écrira $("p").off("mouseover", "", survol)
.
jQuery définit de nouveaux événements. En voici quelques-uns :
mouseenter
est lancé quand la souris pénètre « au-dessus » d'un élément. Il n'est actif qu'à l'entrée de la souris, au contraire de mouseover
qui, lui, est lancé aussi quand la souris survole l'élément. Il est associé à mouseleave
, qui est son pendant quand la souris quitte l'élément.
scroll
est lancé quand l'utilisateur fait défiler la page.
Pour mémoire, un gestionnaire d’événement est une fonction destinée à être lancée en réponse à une action de l’utilisateur (par exemple un clic de souris sur un élément donné). De la même manière qu’avec le DOM, jQuery
fournit deux manières de définir un gestionnaire d’événement :
soit en indiquant le nom du gestionnaire, par exemple...
$("p").on("click", "", Gestionnaire) ;
function Gestionnaire(evt)
{
alert("Ceci est un paragraphe") ;
}
soit en codant directement le gestionnaire, par exemple…
$("p").on("click", "", function(){alert("Ceci est un paragraphe");}) ;
show()
et hide()
permettent respectivement de montrer et cacher des éléments. Par exemple, $("p").hide()
cache tous les paragraphes du document.
show(vitesse)
et hide(vitesse)
permettent respectivement de montrer et cacher des éléments avec une certaine vitesse. Cette vitesse est indiquée par des mots-clefs ("slow"
, "normal"
ou "fast"
) ou le nombre de millisecondes que doit durer l'animation.
toggle()
et toggle(vitesse)
permettent de basculer d'un mode d'affichage à un autre (un élément caché devient visible, ou un élément visible devient caché).
slideDown()
et slideUp()
permettent de faire apparaître (respectivement disparaître) un élément à la manière d'un store se déroulant ou s'enroulant.
slideToggle()
permet de basculer d'un mode d'affichage à un autre.
fadeIn(vitesse)
et fadeOut(vitesse)
permettent de faire progressivement apparaître (ou disparaître) un élément en jouant sur sa transparence.
animate(paramètres)
permet de contrôler une animation, via par exemple les propriétés CSS
.
stop()
arrête toutes les animations en cours sur le document
jQuery.fx.off = true;
permet de désactiver toutes les animations d'un document. jQuery.fx.off = false;
les réactive.
La fonction $
permet de facilement créer des nœuds. par exemple, $("<div><p>Un peu de texte</p></div>")
crée un élément div
contenant un paragraphe. Attention cependant, un tel élément reste « en suspens » tant qu'il n'a pas été explicitement rattaché au DOM, de même qu'un élement créé avec la méthode
createElement()
.
jQuery facilite l'accès et la modification des contenus des nœuds.
Le code HTML
est accessible via la méthode html()
. Si cette méthode est appelée sans argument, elle renvoie le contenu HTML
de l'élément sélectionné. Ainsi, si on a <p id="p1">Un peu de texte <em>important</em>.</p>
, alert($("#p1").html());
affichera Un peu de texte <em>important</em>.
. Si cette méthode est appelée avec argument, alors elle permet de modifier le contenu HTML
. Toujours avec le même code source HTML
, alert($("#p1").html("Un peu de texte <strong>très important</strong>."))
a pour effet de remplacer le code source initial.
La méthode text()
permet, elle, de lire ou de modifier le contenu textuel des éléments auxquels elle est appliquée. $("#id1").text()
lit ainsi le contenu de l'élément d'identifiant id1
, alors que $("li").text("salut");
permet de modifier le contenu de tous les éléments li
en "salut".
Les méthodes append(contenu)
et prepend(contenu)
ajoutent contenu
à l'élément sélectionné, respectivement à sa fin et à son début. Ces méthodes peuvent prendre en paramètres des éléments, des objets jQuery, du texte…
Les méthodes appendTo(sélecteur)
et prependTo(sélecteur)
ajoutent l'élément sélectionné à la fin (respectivement au début) de l'élément spécifié par sélecteur
. Par exemple, $("<span>(Fin de paragraphe)</span>").appendTo($("p"));
ajoute un élément span
à la fin de tous les paragraphes du document.
Les méthodes after(contenu)
et before(contenu)
ajoutent contenu
respectivement après et avant l'élément sélectionné.
Les méthodes insertAfter(sélecteur)
et insertBefore(sélecteur)
ajoutent l'élément sélectionné après (respectivement avant) l'élément spécifié par sélecteur
. Par exemple, $("<p>(Fin de section)</p>").insertBefore($("*:header:not(h1)"));
ajoute un paragraphe avant tous les titres du document, à l'exception des titres h1
.
wrap(html)
permet d'intégrer l'élément sélectionné dans le code HTML
spécifié.
wrap(élément)
permet d'intégrer l'élément sélectionné dans l'élément spécifié.
Par exemple, $("p").wrap($("<div></div>"));
et $("p").wrap(document.createElement(div));
permettent d'entourer tous les paragraphes par un élément div
.
replaceAll(sélecteur)
permet de remplacer l'élément indiqué par sélecteur
par le contenu spécifié :ar exemple, $("<p>Paragraphe</p>").replaceAll("h3");
remplace tous les titres de niveau 3 par des paragraphes avec le même contenu. replaceWith(contenu)
permet de remplacer l'élément sélectionné par contenu
: $("em").on("click", "", function(){$(this).replaceWith("<strong>"+$(this).text()+"</strong>")});
remplace ainsi au clic un élément em
par un élément strong
.
Pour vider un élément sélectionné, on fait appel à la méthode empty()
. Par exemple, $("#p1").empty()
laisse présent l'élément d'identifiant p1
, mais supprime tous ses enfants. La méthode remove(expression)
supprime de l'élément sélectionné le contenu indiqué par expression
. Par exemple, $("p").remove($(":contains('test')"));
supprime tous les paragraphes contenant la chaîne de caractères "test"
.
Cette création est mise à disposition par Gilles Chagnon sous un contrat Creative Commons.