Lire un extrait ( PDF 590 Ko)

Transcription

Lire un extrait ( PDF 590 Ko)
Sarion2012 titre
13/07/12
10:02
Page 1
Éric Sarrion
JQuery 1
.7
&JQuery UI
2e édition
© Groupe Eyrolles, 2011, 2012, ISBN : 978-2-212-13504-6
Sarrion_JQuery.book Page 317 Mercredi, 18. juillet 2012 8:20 08
14
Onglets
Les pages HTML comportant des onglets (tabs) sont devenues courantes dans les
sites web actuels. Elles permettent d’assurer une meilleure compréhension des informations affichées, en les regroupant par onglets.
Principe de base
Supposons qu’on veuille écrire le code HTML permettant d’afficher les onglets
représentés sur la figure 14-1. Nous avons une barre d’onglets (contenant ici trois
onglets), puis un contenu différent pour chacun des onglets.
Figure 14–1
Onglets dans une page HTML
Sarrion_JQuery.book Page 318 Mercredi, 18. juillet 2012 8:20 08
318
jQuery UI : pour des fonctionnalités graphiques avancées
DEUXIÈME PARTIE
JQuery UI demande d’écrire ceci de la façon suivante :
• un bloc <div> global encadrant le tout ;
• une <ul> pour former la barre d’onglets ;
• autant de <li> que d’onglets ;
• autant de <div> que de fenêtres contenant les onglets.
Page HTML composée de trois onglets
<script src = jquery.js></script>
<script src = jqueryui/js/jquery-ui-1.8.16.custom.min.js></script>
<link rel=stylesheet type=text/css
href=jqueryui/css/smoothness/jquery-ui-1.8.16.custom.css />
<div id=tabs>
<ul>
<li><a href=#tab1>Tab
<li><a href=#tab2>Tab
<li><a href=#tab3>Tab
</ul>
<div id=tab1>Contenu du
<div id=tab2>Contenu du
<div id=tab3>Contenu du
</div>
1</a></li>
2</a></li>
3</a></li>
premier onglet</div>
deuxième onglet</div>
troisième onglet</div>
<script>
</script>
Or, si nous affichons la page dans un navigateur (figure 14-2), cela ne s’affiche pas tout à
fait comme prévu... tout simplement car il ne faut pas oublier de signaler, dans la page
HTML, que cet affichage doit s’effectuer selon les conventions de jQuery UI.
Figure 14–2
Les onglets ne s’affichent pas
dans la page HTML.
Sarrion_JQuery.book Page 319 Mercredi, 18. juillet 2012 8:20 08
Onglets
CHAPITRE 14
Cela s’effectue en indiquant que le <div> global est géré par la méthode tabs () de
jQuery UI. On ajoute donc la ligne suivante dans la partie <script> de la page
(jusqu’alors vide) :
Faire appel à la méthode tabs () de jQuery UI pour gérer un élément HTML avec des onglets
<script>
$("#tabs").tabs ();
</script>
La page s’affiche alors avec les onglets, comme sur la figure 14-1.
À SAVOIR Méthode tabs ()
La méthode tabs () est une des nombreuses méthodes de jQuery UI, qui s’utilise sur un objet de
classe jQuery retourné par la fonction jQuery (). Les éléments de la liste associée sont alors transformés en onglets, avec une gestion automatique des clics sur ceux-ci (pour passer d’un onglet à l’autre)
gérée de façon transparente par jQuery UI.
Mise en forme du contenu
L’utilisation de la méthode tabs () modifie de façon radicale l’aspect des éléments
HTML écrits dans la page. En effet, cette méthode parcourt (en interne dans
jQuery UI) le code HTML et ajoute aux éléments concernés (ici, les onglets) de
nouvelles classes CSS qui leur donnent le style adéquat.
La figure 14-3 (page suivante) représente un exemple de code HTML généré par
jQuery UI après avoir été modifié par l’instruction tabs () (ce code a été récupéré
au moyen de Firebug associé à Firefox).
Ensuite, il est possible d’utiliser les classes CSS des éléments afin de personnaliser
l’affichage. Par exemple, si nous modifions la classe CSS ui-state-default, associée
aux éléments <li>, nous devrions obtenir un nouvel aspect pour les onglets. De
même pour le contenu de ces onglets, si on modifie la classe CSS ui-tabs-panel,
associée aux éléments <div>.
319
Sarrion_JQuery.book Page 320 Mercredi, 18. juillet 2012 8:20 08
320
jQuery UI : pour des fonctionnalités graphiques avancées
DEUXIÈME PARTIE
Figure 14–3
Code HTML généré
par la méthode tabs ()
Modifions ces éléments dans le code HTML en ajoutant une balise <style> :
Modification du style des onglets
<script src=jquery.js></script>
<script src=jqueryui/development-bundle/ui/jquery-ui-1.8.16.custom.js></script>
<link rel=stylesheet type=text/css
href="jqueryui/development-bundle/themes/smoothness/jquery.ui.all.css" />
<style type=text/css>
li.ui-state-default {
font-size : 10px;
}
div.ui-tabs-panel {
font-size : 15px;
font-family : georgia;
font-style : italic;
}
</style>
<div id=tabs>
<ul>
<li><a href=#tab1>Tab
<li><a href=#tab2>Tab
<li><a href=#tab3>Tab
</ul>
<div id=tab1>Contenu du
1</a></li>
2</a></li>
3</a></li>
premier onglet</div>
Sarrion_JQuery.book Page 321 Mercredi, 18. juillet 2012 8:20 08
Onglets
CHAPITRE 14
<div id=tab2>Contenu du deuxième onglet</div>
<div id=tab3>Contenu du troisième onglet</div>
</div>
<script>
$("#tabs").tabs ();
</script>
REMARQUE Emplacement de la balise <style>
Le code HTML est identique au précédent, sauf que nous avons ajouté la balise <style> après l’inclusion des styles de jQuery UI. Notez que l’ajout de nos propres styles doit se faire après ceux de jQuery UI,
sinon notre modification ne sera pas prise en compte.
Comme le montre la figure 14-4, l’apparence des onglets et de leur contenu a été
modifiée en fonction du nouveau style.
Figure 14–4
L’apparence des onglets
a été personnalisée.
La méthode tabs ()
Cette méthode peut s’utiliser sous les deux formes suivantes :
Première forme
$(selector, context).tabs (options);
Seconde forme
$(selector, context).tabs ("action", params);
321
Sarrion_JQuery.book Page 322 Mercredi, 18. juillet 2012 8:20 08
322
jQuery UI : pour des fonctionnalités graphiques avancées
DEUXIÈME PARTIE
tabs (options)
La méthode tabs (options) est utilisée pour déclarer qu’un élément HTML (et son
contenu) doit être géré sous forme d’onglets. Le paramètre options est un objet permettant de spécifier une apparence et un comportement aux onglets concernés. Différents types d’options sont disponibles, selon qu’elles gèrent les onglets directement
ou les événements liés aux onglets.
Options gérant les onglets
Tableau 14–1 Gestion des onglets
Options
Fonction
options.collapsible Paramétrée à true, elle autorise les onglets à être désélectionnés.
Par défaut, elle est à false : le clic sur un onglet sélectionné ne le désélec-
tionne pas.
options.disabled
Indique, dans un tableau, les index des onglets désactivés (c’est-à-dire ceux
qui ne pourront pas être sélectionnés). Par exemple, [0, 1] permet de
désactiver les deux premiers onglets.
options.selected
Indique l’index du premier onglet sélectionné : par défaut 0, c’est-à-dire le
premier onglet.
options.event
Nom de l’événement qui permet de sélectionner un nouvel onglet (par défaut
"click"). Si, par exemple, on indique "mouseover", l’onglet sera sélec-
tionné lors de son survol par la souris.
options.fx
Indique un effet lors de la sélection de l’onglet, tel qu’un affichage progressif
de l’onglet et de son contenu, par exemple :
options.fx = { opacity : "toggle" }.
options.ajaxOptions Options de paramétrage pour Ajax, lorsqu’on désire mettre à jour le contenu
d’un onglet par Ajax. On utilisera en particulier
options.ajaxOptions.data qui permet de préciser des paramètres
envoyés au serveur.
Options gérant les événements liés aux onglets
Ces méthodes permettent d’effectuer un traitement lorsqu’un événement se produit
dans les onglets, comme la sélection de l’un d’eux, l’ajout d’un nouvel onglet, etc.
Elles reçoivent le paramètre event correspondant à l’événement, suivi de l’objet tab
qui décrit l’onglet sur lequel s’est produit l’événement. Cet objet tab est composé des
propriétés suivantes :
• index : index de l’onglet sur lequel s’est produit l’événement (à partir de 0) ;
• panel : élément <div> correspondant au contenu de l’onglet.
Sarrion_JQuery.book Page 323 Mercredi, 18. juillet 2012 8:20 08
Onglets
CHAPITRE 14
Tableau 14–2 Gestion des événements liés aux onglets
Options
Effet
options.select
La méthode select (event, tab) est appelée lors de la sélection d’un
onglet (manuellement ou par la méthode tabs ("select")).
options.show
La méthode show (event, tab) est appelée lorsque le contenu d’un
onglet devient visible (manuellement ou lors de l’affichage du premier onglet
sélectionné ou par l’appel d’une méthode comme tabs ("select")).
options.add
La méthode add (event, tab) est appelée lors de l’ajout d’un onglet
dans la liste des onglets (par la méthode tabs ("add")).
options.remove
La méthode remove (event, tab) est appelée lors de la suppression
d’un onglet dans la liste des onglets (par la méthode tabs ("remove")).
options.enable
La méthode enable (event, tab) est appelée lors de l’activation d’un
onglet dans la liste des onglets (par la méthode tabs ("enable")).
options.disable
La méthode disable (event, tab) est appelée lors de la désactivation d’un onglet dans la liste des onglets (par la méthode
tabs ("disable")).
options.load
La méthode load (event, tab) est appelée lors du chargement ou de
l’affichage d’un onglet dans la liste des onglets par Ajax (par la méthode
tabs ("load")).
tabs ("action", params)
La méthode tabs ("action", params) permet d’effectuer, au moyen d’un programme,
une action sur les onglets, telle que sélectionner, désactiver, ajouter ou supprimer un
onglet. L’action est indiquée sous forme d’une chaîne de caractères dans le premier argument (par exemple, "add" pour ajouter un nouvel onglet), tandis que les arguments qui
suivent concernent les paramètres de cette action (par exemple, l’index de l’onglet concerné).
L’appel de ces méthodes provoque parfois un événement qui porte le même nom que
l’action correspondante (l’événement add est déclenché par l’action "add"). Ces événements sont traités par les options vues dans la section précédente.
Tableau 14–3 Actions possibles grâce à la méthode tabs ("action", params)
Méthode
Action
tabs ("add", "#id",
title, index)
Ajouter un onglet à la position indiquée par index (à partir de 0). Les
onglets qui suivent ont leur index décalé de 1.
"#id" correspond à l’identifiant d’un <div> qui est associé au contenu de cet onglet (le <div> est créé par jQuery UI, son contenu devra
être ajouté ultérieurement).
Le paramètre title correspond au titre de l’onglet.
Si le paramètre index n’est pas indiqué, l’onglet est ajouté à la fin de
la liste.
323
Sarrion_JQuery.book Page 324 Mercredi, 18. juillet 2012 8:20 08
324
jQuery UI : pour des fonctionnalités graphiques avancées
DEUXIÈME PARTIE
Tableau 14–3 Actions possibles grâce à la méthode tabs ("action", params) (suite)
Méthode
Action
tabs ("remove", index)
Supprimer l’onglet dont l’index est indiqué, ainsi que le contenu associé.
tabs ("disable", index) Désactiver l’onglet dont l’index est indiqué.
tabs ("enable", index)
Rendre actif l’onglet dont l’index est indiqué.
tabs ("select", index)
Sélectionner l’onglet dont l’index est indiqué : son contenu devient alors
visible.
tabs ("url", index,
url)
Associer le contenu de l’onglet dont l’URL est indiquée dans le paramètre url. Le contenu de l’onglet sera récupéré par Ajax lors de l’appel de
la méthode tabs ("load", index).
tabs ("load", index)
Récupèrer le contenu de l’onglet par Ajax, en utilisant l’URL indiquée par
tabs ("url", index, url).
tabs ("rotate",
duration, repeat)
Sélectionner périodiquement chacun des onglets, selon une durée indiquée en millisecondes par duration.
Si repeat vaut true, le cycle est répétitif, sinon il s’effectue une seule
fois (valeur par défaut).
tabs ("destroy")
Supprimer la gestion des onglets. Les onglets redeviennent de simples
balises HTML sans classe CSS ni gestion d’événements.
tabs ("length")
Retourner le nombre d’onglets du premier élément de la liste correspondant au sélecteur utilisé.
Gestion des événements dans les onglets avec bind ()
En plus d’offrir des méthodes événementielles dans les options de la méthode
tabs (options), jQuery UI nous permet de gérer ces événements au moyen de la
méthode bind () classique (voir le chapitre 6 sur les événements). jQuery UI a créé
différents événements, dont voici la liste.
Tableau 14–4 Événements jQuery UI pour la gestion des onglets
Événement
Description
tabsselect
Un onglet a été sélectionné (manuellement ou par la méthode tabs ("select")).
tabsshow
Le contenu d’un onglet devient visible (manuellement ou lors de l’affichage du premier
onglet sélectionné, ou encore par l’appel d’une méthode comme tabs ("select")).
tabsadd
Un onglet a été ajouté (par la méthode tabs ("add")).
tabsremove
Un onglet a été supprimé (par la méthode tabs ("remove")).
tabsenable
Un onglet a été activé (par la méthode tabs ("enable")).
tabsdisable
Un onglet a été désactivé (par la méthode tabs ("disable")).
tabsload
Le contenu d’un onglet a été chargé par Ajax (par la méthode tabs ("load")).
Sarrion_JQuery.book Page 325 Mercredi, 18. juillet 2012 8:20 08
Onglets
CHAPITRE 14
Ces événements permettent d’effectuer des traitements grâce à la fonction de callback que fournit la méthode bind (eventName, callback).
Exemples d’utilisation des onglets
Création dynamique d’onglets
On souhaite créer un onglet (et son contenu) directement de façon dynamique au
moyen de JavaScript. Le code HTML crée initialement trois onglets, tandis que le
script JavaScript ajoute le quatrième.
Création dynamique d’onglet avec tabs ()
<script src=jquery.js></script>
<script src=jqueryui/development-bundle/ui/jquery-ui-1.8.16.custom.js></script>
<link rel=stylesheet type=text/css
href="jqueryui/development-bundle/themes/smoothness/jquery.ui.all.css" />
<div id=tabs>
<ul>
<li><a href=#tab1>Tab
<li><a href=#tab2>Tab
<li><a href=#tab3>Tab
</ul>
<div id=tab1>Contenu du
<div id=tab2>Contenu du
<div id=tab3>Contenu du
</div>
1</a></li>
2</a></li>
3</a></li>
premier onglet</div>
deuxième onglet</div>
troisième onglet</div>
<script>
$("#tabs").tabs ({
fx : { opacity : "toggle" },
}).tabs ("add", "#tab4", "Tab 4");
$("<i> Contenu du quatrième onglet</i>").appendTo ("#tab4");
</script>
Remarquez comme nous avons chaîné la première méthode tabs () avec la seconde.
La première méthode tabs () est nécessaire, car elle transforme le code HTML que
nous avons écrit en un code affichant des onglets (avec les classes CSS que
jQuery UI ajoute automatiquement), tandis que la seconde permet d’effectuer
l’action "add" qui ajoute l’onglet en fin de liste.
325