Toute jQuery repose autour d'une fonction :
jQuery() (abrégée
$() car le dollar est un caractère autorisé pour les noms de fonctions en JavaScript) qui permettra
de sélectionner des éléments dans votre page web.
Le premier argument de cette fonction, l'« expression », qu'on lui passe est
une chaîne de caractère, représentant un sélecteur CSS, un peu comme dans vos feuilles de styles, mais en plus fort !
Sélecteurs basiques
Voici quelques exemples pour que vous vous rappeliez ce que sont les sélecteurs CSS :
| Expression |
Retour |
| #titre |
la balise ayant pour id "titre" |
| h1 |
les balises h1 |
| .gras |
les balises qui ont la classe "gras" |
| a,h1,h2 |
les balises a, h1 et h2 |
| * |
toutes les balises |
Le sélecteur de l'id ne sélectionne pas plusieurs éléments mais un seul (ou aucun). Les autres sélecteurs peuvent sélectionner 0, 1 ou plusieurs éléments.
Le dernier exemple est à utiliser avec précautions : cela renvoie toutes les balises, même la balise html !
Sélection d'un élément par la fonction principale de jQuery
Une fois que la fonction retourne ton objet jQuery, on en fait quoi ?
Tout (et n'importe quoi

) en utilisant des méthodes. Les méthodes sont des fonctions associées à des objets. Les méthodes jQuery sont donc des fonctions qui ne s'utilisent que sur des objets jQuery.
Il y a différentes méthodes, et certaines méthodes ont elles-mêmes différents arguments afin de répondre à différents usages. Leurs noms sont intuitifs (en anglais).
Quelques méthodes
À titre d'exemple, pour passer à la pratique, la méthode
html() permet d'accéder au contenu des éléments si on l'appelle sans aucun argument, et permet de modifier le contenu des éléments si on l'appelle avec comme premier argument une chaîne de caractères (représentant le contenu).
Pour ce code :
<div id="titre">J'aime les frites.</div> :
Code : JavaScript - Essayez ce code ! | $('#titre'); // Sélectionne notre balise mais ne fait rien.
alert($('#titre').html()); // Affiche le contenu "J'aime les frites."
$('#titre').html('Je mange une pomme'); // Remplace le contenu ("J'aime les frites.") par "Je mange une pomme".
$('#titre').html($('title').html()); // Remplace le contenu par le titre de la page (contenu dans la balise <title>).
|
Deux autres méthodes,
before() et
after() permettent d'ajouter du contenu ou un élément de la page (ça dépend de ce qu'on lui passe en paramètre) respectivement avant et après l'élément en question :
Code : JavaScript - Essayez ce code ! | // Ajoute du contenu après chaque balise textarea.
$('textarea').after('<p>Veuillez ne pas poster de commentaires injurieux.</p>');
// Ajoute "Voici le titre :" avant la balise ayant comme id "titre".
$('#titre').before('Voici le titre :');
// Ajoute "! Wahou !" après la balise ayant comme id "titre".
$('#titre').after('! Wahou !');
|
Chaînage des méthodes
Il faut savoir qu'on peut chaîner les méthodes, c'est-à-dire que si une méthode agit sur un élément (elle n'est pas censée donner une information sur cet élément mais le modifier), on peut rajouter une autre méthode :
Code : JavaScript - Essayez ce code ! | // Ajoute du contenu après chaque balise textarea.
$('textarea')
.after('<p>Veuillez ne pas poster de commentaires injurieux.</p>')
.after('<p><strong>Merci beaucoup.</strong></p>');
// Ajoute "Voici le titre :" avant et "! Wahou !" après la balise ayant comme id "titre".
$('#titre')
.before('Voici le titre :')
.after('! Wahou !');
|
Comment cela marche-t-il ?
C'est assez simple : les méthodes qui agissent sur des éléments retournent l'objet jQuery en question, tandis que les méthodes censées donner une information sur ces éléments retournent cette information. Le chaînage s'interrompt donc quand on a affaire au second type de méthode (comme
html() sans aucun argument).
Chargement du DOM
Quand on fait un appel à la fonction principale, il se peut parfois qu'elle ne retourne rien. On a beau placer son code en fin de
body,
les éléments de la page web ne sont pas encore placés.
La solution de ce problème en JavaScript est le fameux :
Code : JavaScript | window.onload = function(){
// Fonctions du genre document.getElementById('balise') qui marchent,
// on peut accéder aux éléments.
};
|
jQuery offre une syntaxe à peu près similaire : la fonction doit juste
être donnée à la fonction principale jQuery() ou
$().
Code : JavaScript | $(function(){
// On peut accéder aux éléments.
// $('#balise') marche.
});
|
Le DOM peut alors être manipulé en toute sûreté car vous pouvez être sûrs que tous les éléments existent. Les feuilles de styles sont aussi chargées si elles ont été incluses avant le script.
On peut utiliser cela plusieurs fois, les fonctions seront appelées chronologiquement à partir du moment où le document est prêt.
Désormais, presque tous les bouts de codes jQuery donnés dans ce tutoriel devront être entourés de $(function(){...}); (sauf pour les fonctions qui se déclenchent avec des boutons par exemple).
Conflits entre différentes bibliothèques JavaScript
Le dollar est un caractère souvent utilisé pour
les noms de fonctions de bibliothèques JavaScript.
La fonction
$.noConflict() ou
jQuery.noConflict() (contenues respectivement dans
$ et dans
jQuery) permet de supprimer l'alias
$.
Vous devrez utiliser la fonction jQuery() car
$() ne sera ainsi plus utilisable.
Cependant, avec
des closures, on peut aisément récupérer cette utilisation pratique ; exemple de la documentation jQuery :
Code : JavaScript | jQuery.noConflict();
(function($) {
$(function() {
// Du code qui utilise $() pour jQuery().
});
})(jQuery);
// Du code utilisant le $() d'autres bibliothèques JS.
|
Si on passe
true à cette fonction, elle supprime aussi
jQuery. Dans tous les cas, cette fonction retourne ce
jQuery() et vous pouvez ainsi
stocker jQuery dans n'importe quelle variable :
Code : JavaScript | var mon_jQuery_a_moi;
mon_jQuery_a_moi = jQuery.noConflict(true);
|