JQuery
JavaScript | |
---|---|
◀▬▬▶ | |
⚐ à finaliser | ☸ intermédiaire |
⚒ 2014/12/08 | |
Prérequis | |
Catégorie: JavaScript |
jQuery est une bibliothèque Javascript dont le but est de simplifier plusieurs opérations fastidieuses en Javascript "pur". En particulier elle rends la manipulation du DOM et l'ajout de transitions en HTML beaucoup plus simple.
Pourquoi utiliser jQuery ?
Il y a plusieurs raisons en faveur de l'utilisation de jQuery. Tout d'abord il s'agit d'une des librairies les plus répandues et que souvent lorsque l'on cherche un réponse é une question sur les forums, la syntaxe utilisée est celle de jQuery.
Le raison principale pour choisir jQuery est surtout que, comme la plus part des librairies, cela facilite beaucoup de manipulation, surtout en ce qui concerne la manipulation d'élément du DOM. De plus, jQuery étant très générale, son apprentissage dépasse le cadre de certaines fonctionnalités spécifiques (comme peuvent l'être d'autre librairies comme d3 ou raphael).
L'installation
Vous pouvez télécharger la dernière version de jQuery sur le sit de jQuery
il vous suffit alors d'ajouter la ligne suivante dans votre code HTMl. En général il est préférable de la mettre tout à la fin du document, juste avant le tag <\body>
.
<script src="jquery.js"></script>
vous pouvez aussi utiliser la version "minifiée" disponible en ligne
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
Cependant, il est préférable d'utiliser une version locale quand on fait le développement pour éviter de devoir aller regarder les serveurs de google à chaque rafraîchissement de la page ;)
La syntaxe de base
La syntaxe de base de jQuery et la même que celle de JavaScript, vous ne serez donc pas perdu si vous connaissez ce language. en effet, pour utiliser jQuery il faut avoir des bases de JavaScript.
- page JavaScript
- Tutoriel Javascript_tutorial_-_basics (edutechwiki en)
D'ailleurs, le fait que jQuery soit une bibliothèque Javascript fait que le code jQuery doit être insérer entre deux balises <script type="text/javascript">
et </script>
, ce qui montre bien que les instrucstions javascript et jQuery peuvent être mélangées. (Formellement, jQuery n'est d'ailleurs pas un language, simplement un ensemble de fonctions écrites en Javascript, des raccourcis de notation si vous voulez).
Premiers pas, la sélection d'un élément du DOM
Une des grandes forces de jQuery est de fournir un raccourcis pour sélectionner les éléments du DOM.
Pour sélectionner l^'élément d'id "p1", en Javascript il faut écrire
document.getElementById("p1");
alors qu'avec jQuery, il suffit d'écrire
$("#p1");
C'est non seulement plus rapide mais aussi plus facile à se souvenir (vous remarquerez que la syntaxe "#p1" et la même que pour sélectionner l'élément d'id "p1" en CSS) et surtout plus puissante car la même instruction "$" vous permet de sélectionner non pas uniquement par id mais aussi d'autres types de sélecteurs plus complexes (voir plus bas).
Syntaxe de sélection
La syntaxe de sélection de jQuery reprend celle de CSS dont :
syntaxe | exemple | description |
balise | p | sélectionne toutes les balises "p" |
balises imbriqués | p img | sélectionne toutes les balises "img" qui se trouve à l'intérieur d'une balise "p" |
ou : "," | p, img | sélectionne toutes les balises "img" ou "p"dans le document |
classe : "." | .maClasse | sélectionne toutes les balises de classe "maClasse" (c'et-à-dire avec l'attribut class="maClasse") |
id : "#" | #monElement | sélectionne la balise d'id "monElement" (c'et-à-dire avec l'attribut id="monElement"), comme l'id est unique, il n'y a qu'une seule balise possible |
attribut : "[...=...]" | [alt="flower"] | sélectionne toutes les balises dont l'attribut alt vaut flower (c'et-à-dire avec l'attribut alt="flower") |
combinaison | p.firstPara img[alt="flower"] | sélectionne toutes les balises img dont l'attribut alt vaut flower qui se trouvent à l'intérieur d'une balise p dont la classe vaut firstPara |
la liste complète est disponible sur le site de la W3 school.
Veillez à bien comprendre et connaître ces sélecteurs, car cela va beaucoup vous aider, en jQuery comme en CSS.
Pour plus d'information sur la sélection d'éléments en jQuery, voir le tutoriel sur learn-jquery.com.
Manipuler la classe d'un élément
Pour modifier la classe d'un élément sélectionné, c'est très simple, jQuery dispose de 3 méthodes prédéfinies : addClass
, removeClass
et ToggleClass
.
syntaxe | exemple | description |
.addClass() | $(p#p1).addClass("enGras"); | ajoute au paragraphe d'id "p1" la classe "enGras" |
.removeClass() | $(p#p1).removeClass("enGras"); | retire au paragraphe d'id "p1" la classe "enGras" |
.toggleClass() | $(p#p1).toggleClass("enGras"); | fait "commuter" la classe "en gras, c'est-à-dire : ajoute au paragraphe d'id "p1" la classe "enGras" s'il ne l'avait pas et la lui retire s'il l'avait. |
.hasClass() | $(p#p1).hasClass("enGras"); | déternie si le paragraphe d'id "p1" dispose de la classe "enGras" (renvoie un booléen true ou false). |
Modification d'un élément
Les méthodes les plus utilisées pour la manipulation des éléments sont
syntaxe | exemple | description |
.text() | $(p#p1).text(); | renvoie le contenu du texte du paragraphe d'id "p1" |
.text() | $(p#p1).text("Nouveau texte"); | change le contenu du paragraphe d'id "p1" pour mettre : Nouveau texte. |
.attr() | $(p#p1).attr(); | renvoie le contenu du texte du paragraphe d'id "p1" |
.attr() | $(a#lien1).attr("href", "http://edutechwiki.unige.ch/"); | change le contenu de l'attribut "href" du lien d'id "lien1" pour mettre : http://edutechwiki.unige.ch/ |
On peut aussi utiliser .attr() pour changer la taille et tout les attributs d'une balise, cependant il est en général mieux d'en changer le maximum possible via des classes CSS.
Pour une plus grande référence (notamment sur la méthode .attr et .html) voir
- learn.jquery.com sur la manipulation des éléments
- http://learn.jquery.com/using-jquery-core/attributes/ [learn.jquery-com sur la méthode attr]
Ajout et suppression d'une balise
Il faut savoir que jQuery ne se limite pas à la sélection de balises existantes, mais peut aussi créer des balises. Pour cela, reagardons les deux syntaxes suivantes
var monTitre = $("h1");
var monPara = $("<p>Texte du para</p>");
La première crée une node de titre de niveau 1 (h1) et la stocke dans la variable monTitre. La seconde crée une node paragraphe (p) contenant le texte "Texte du para" et la stocke dans la variable monPara. Ainsi, il est possible d'y faire référence plus tard.
Par exemple, avec les deux instructions ci-dessus et le code HTML
<p id="p1">Mon texte</p>
<div id="monDiv">Rien</div>
<source>
les méthodes suivantes donnent
{|border="1" cellpadding="6" style="border-collapse:collapse;"
| '''syntaxe'''
| '''exemple'''
| '''description'''
|-
| .appendTo()
| $(div#monDiv).appendTo(monPara);
| ajoute le paragraphe stocké dans monPara '''à la fin''' du div
<source lang="HTML5">
<p id="p1">Mon texte</p>
<div id="monDiv">
Rien
<p>Texte du para</p>
</div>
<source>
|-
| .prependTo()
| $(div#monDiv).prependTo(monPara);
| ajoute le paragraphe stocké dans monPara '''au début''' du div
<source lang="HTML5">
<p id="p1">Mon texte</p>
<div id="monDiv">
<p>Texte du para</p>
Rien
</div>
<source>
|}
On peut aussi supprimer un élément avec la méthode
{|border="1" cellpadding="6" style="border-collapse:collapse;"
| '''syntaxe'''
| '''exemple'''
| '''description'''
|-
| .remove()
| $(div#monDiv).remove();
| supprime le div, il ne reste que
<source lang="HTML5">
<p id="p1">Mon texte</p>
<source>
|}
=== Evenements ===
Les événements en jQuery sont attachés aux objets comme suit, par exemple pour l'événement "click" :
<source lang="javascript">
$( "p" ).click(function() {
//instructions qui doivent se réaliser lors de l'événement
// souvent ici il s'agit simplement de l'appel à une autre fonction
});
On peut aussi utiliser
$( "p" ).on( "click", function() {
//instructions qui doivent se réaliser lors de l'événement
// souvent ici il s'agit simplement de l'appel à une autre fonction
});
Et pour enlever tout les event handlers de type click de l'élément p :
$( "p" ).off( "click" );
Pour plus d'informations, voir
Effets et animations
Avec jQuery il est aussi très facile de faire des animations et des effets sur les balises.
Méthode animate
Cette méthode permet d'animer des attributs de l'éléments sélectionné.
Par exemple, pour l'image suivante
<img id="book" src="book.png" alt="" width="100" height="123"
style="position: relative; left: 10px;">
pour animer les attributs opacity, left offset et height simultanément il faut écrire
$( "#book" ).animate({
opacity: 0.25, //fondu jusqu'à 0.25 d'opacité
left: "+=50", //ajoute progressivement 50 à left
height: "toggle" // toggle la hauteur
}, 5000, function() {// fonction quand l'animation se termine}
);
Autres méthodes
Il existe d'autres méthodes déjà construites sur le même schéma, entre autrs :
syntaxe | description |
hide, show | fait apparaître ou disparaître l'élément (comme display : none) |
fadeIn, fadeOut et fadeToggle | fait apparaître ou disparaître l'élément en un fondu enchaîné. |
slideDown, slideUp, slideToggle | fait apparaître ou disparaître l'élément en enroulant ou déroulant l'élément (effet rideau). |
Plus plus d'infos voir
jQuery UI
À complément de la bibliothèque elle-même, jQuery met à disposition aussi des éléments utiles pour la construction d’interfaces utilisateurs (UI) tels que des effets, des éléments interactifs (e.g. tabs, boutons, …) des thèmes graphiques, ou d’interactions communes (e.g. « drag and drop »).
- Voir la page jQuery UI
Liens externes
- cheatsheet avec toutes les commandes jQuery : http://oscarotero.com/jquery/
- Tutoriel: Introduction à JQuery, montre surtout comment créer un questionnaire d'auto-évaluation avec jQuery.