Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Par Damien Ravé - Le Caphar, mardi 15 juillet 2008 à 22:55 :: Webdesign :: #135 :: rss
Lorsqu'un site doit être mis à jour par un animateur de contenus dépourvu de compétences techniques en HTML ou Javascript, le développeur a généralement deux alternatives :
- limiter les possibilités d'édition au strict minimum : pas d'effets, pas de pages dynamiques ; l'animateur va tout péter et appeler au secours après dix minutes d'utilisation. Résultat : en dehors des fonctionnalités techniques pointues, les pages éditables sont tristounes et statiques.
- créer des outils d'édition sur mesure : interfaces de gestion de contenus, tables de bases de données bien structurées, plugins super élaborés, le tout en langage serveur (PHP, ASP, Ruby...) ; ainsi on s'assure par divers garde-fous que les données sont au format voulu. Le site gagne en dynamisme, mais en contrepartie d'une complexité accrue, tant côté développement qu'administration.
A l'heure de mettre en ligne une FAQ (Foire aux questions), je me suis posé la question suivante : comment concilier la souplesse de mise à jour avec le dynamisme de javascript ? Pour rappel, le fonctionnement classique d'une FAQ est le suivant : une liste de questions rangées par thème, un clic sur la question affichant immédiatement la réponse associée.
Je me suis donc mis en tête d'utiliser la puissance de JQuery et des sélecteurs pour réaliser ce travail. Voici comment procéder, en
1. Créer les balises
Partons d'une structure de pages simple, aisément déclinable : un titre principal (h1), des sections (h2), des questions (h3) et enfin des réponses (p). Il s'agit d'un code facile à produire et à éditer dans un éditeur Wysiwig (ex. TinyMCE). Nous n'allons pas créer une page HTML complète, puisque cette FAQ sera mise à jour par l'animateur de contenus. Le code pourra donc ressembler à ça :
<h1>FAQ de l'administrateur</h1>
<h2>Section 1 : Connexion</h2>
<h3>Comment puis-je m'inscrire ?</h3>
<p>L'inscription est gratuite et ouverte à tout le monde. Cliquez sur le lien "inscription" présent à droite du logo.</p>
<h3>Je suis inscrit, mais le site ne me reconnaît pas. Comment faire ?</h3>
<p>Cliquez sur "connexion" puis saisissez l'adresse e-mail ainsi que le mot de passe saisis lors de votre inscription. </p>
<h2>Section 2 : Publication</h2>
<h3>Comment publier un article</h3>
<p>Après vous être connecté, vous pourrez immédiatement proposer un article en cliquant sur "publier un article" dans le menu de gauche. Votre article sera relu par notre comité de rédaction qui décidera de le publier ou non.</p>
2. Un peu de mouvement avec jquery
Nous souhaitons maintenant que ce texte se comporte comme une FAQ. Nous voulons donc pour chaque question :
- masquer/replier la réponse associée au chargement de la page
- afficher la question comme un lien (par ex. bleu, souligné, avec un curseur en forme de pointeur)
- lors d'un clic sur la question, basculer l'état du paragraphe qui suit : visible s'il était masqué, masqué s'il était visible.
JQuery rend cette manipulation extrèmement aisée. Voici le code nécessaire :
// On inclut le source JQuery (en head)
<script type="text/javascript" src="jquery-1.2.3.min.js"></script>
<script type="text/javascript">
// On lance la boucle sur tous les H3
$('h3').each(function() {
// On masque le paragraphe qui suit
$(this).next('p').hide();
// On copie le style des balises A
var couleurLien = $('a').css("color");
$(this).css({"text-decoration" : "underline", "color" : couleurLien, "cursor":"pointer"});
// A chaque clic, on bascule l'état de l'élément P suivant
$(this).click(function() {
$(this).next('p').toggle();
});
});
</script>
Et voilà ! Votre FAQ s'anime et réagit à chacun des clics. Il reste à choisir d'inclure le code en intégralité, ou le lier sous forme externe dans une balise SCRIPT directement à la fin du code source éditable (avec le risque que l'utilisateur l'efface) ou de le charger sur toutes les pages de votre site, en le déclenchant uniquement lorsqu'une condition est remplie (par exemple en fonction de l'url, ou encore en détectant la présence d'un ID d'élément particulier).
Attention cependant : la réponse à chaque question ne doit comporter qu'un seul paragraphe. Les éventuels sauts de ligne auront la forme de balises BR exclusivement.
Démonstration
Conclusion
On fait en toute simplicité un pas supplémentaire vers la séparation entre la forme et le contenu. De plus, cette méthode se dégradera grâcieusement sur les dispositifs ne disposant pas de Javascript.
On crée l'élément "version imprimable" qu'on insère avant le H1 du titre
var imprimer = document.createElement('a');
imprimer.id = "imprimer";
imprimer.innerHTML = "Version Imprimable";
$(imprimer).insertBefore('h1');
A chaque clic sur cet élément, les P sont affichés et l'impression peut se lancer.
$('#imprimer').click(function() {
$('p').show();
window.print();
});
A lire sur le même thème
- Antispam pour les commentaires de blog : un Captcha sans images
- 7 pratiques Javascript qui changent la vie
- Yahoo UI vs JQuery : quel framework Javascript pour vos applications Web 2.0 ?
- Des tableaux de données simples, standards et lisibles en CSS et PHP
- Vos utilisateurs buggent ? Quelques pièges à éviter dans vos applications en ligne
Articles les plus lus
- Tendances Web 2007 : 60 palettes de couleur élégantes pour vos sites Web
- Tout ce qu'il faut savoir sur le PageRank Google (traduit de l'anglais)
- 7 pratiques Javascript qui changent la vie
- Planète Bosphore
- Quelle est la meilleure architecture pour votre site Web ?
- 10 fonctions PHP-MySQL que j'utilise tous les jours

Commentaires
1. Le lundi 21 juillet 2008 à 20:54, par Iridium- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Iridium a posté 1 commentaire dans les articles suivants :
2. Le mardi 22 juillet 2008 à 07:28, par Damien Ravé - Le Caphar- Comment perdre vos clients grâce à un nouveau design : la parabole de la ligne 13
- Et toi tu fais quoi dans la vie ? (entretien avec un webdesigner)
- Yahoo UI vs JQuery : quel framework Javascript pour vos applications Web 2.0 ?
- Vous voulez survivre ? Soyez un filtre.
- Comment référencer un site professionnel sur Google : oubliez les meta tags
- Quel est votre manque-à-bloguer ? (encore une chaîne de blogs !)
- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
- Tutoriel PHP : pourquoi passer au développement orienté objet ?
- Stats du blog en juin : 11000 visiteurs, 36000 pages vues, et... 11,19 dollars de recettes publicitaires
- 10 choses que les femmes attendent des hommes d'aujourd'hui
- Nouveau design enrichi : le Potlatch prend le large
- Le marketing est un humanisme
- Carla Bruni nue : que fait Sarkozy ?
- Dix ans après, le Web sert toujours à se regarder le nombril
- Antispam pour les commentaires de blog : un Captcha sans images
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Des tableaux de données simples, standards et lisibles en CSS et PHP
- Planète Djemma el'Fna
- Tendances Web 2007 : 60 palettes de couleur élégantes pour vos sites Web
- Développeurs Web : c'est le moment de demander une augmentation
- Vos utilisateurs buggent ? Quelques pièges à éviter dans vos applications en ligne
- Quelle est la meilleure architecture pour votre site Web ?
- 7 pratiques Javascript qui changent la vie
- Planète Bosphore
- Astuce PHP : afficher ou masquer le "s" de résultat(s) en une ligne
- Sarkozy ou le retour de la peine de mort dans l'oeuf
- Nouvelle affiche de campagne de Nicolas Sarkozy
- Tutorial PHP : chronométrer le temps de calcul des requêtes SQL (benchmark)
- Démago ou l'urgence médiatique
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Pour la triche à l'école (anglais)
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Je veux être une star underground - 1. l'artiste est un grand malade
- Ceux qui ne veulent pas de Sarkozy comme président
Damien Ravé - Le Caphar a posté 34 commentaires dans les articles suivants :
3. Le mardi 22 juillet 2008 à 08:26, par Iridium- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Iridium a posté 1 commentaire dans les articles suivants :
4. Le mercredi 23 juillet 2008 à 23:58, par Tchup- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Tchup a posté 1 commentaire dans les articles suivants :
5. Le jeudi 24 juillet 2008 à 17:33, par Damien Ravé - Le Caphar- Comment perdre vos clients grâce à un nouveau design : la parabole de la ligne 13
- Et toi tu fais quoi dans la vie ? (entretien avec un webdesigner)
- Yahoo UI vs JQuery : quel framework Javascript pour vos applications Web 2.0 ?
- Vous voulez survivre ? Soyez un filtre.
- Comment référencer un site professionnel sur Google : oubliez les meta tags
- Quel est votre manque-à-bloguer ? (encore une chaîne de blogs !)
- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
- Tutoriel PHP : pourquoi passer au développement orienté objet ?
- Stats du blog en juin : 11000 visiteurs, 36000 pages vues, et... 11,19 dollars de recettes publicitaires
- 10 choses que les femmes attendent des hommes d'aujourd'hui
- Nouveau design enrichi : le Potlatch prend le large
- Le marketing est un humanisme
- Carla Bruni nue : que fait Sarkozy ?
- Dix ans après, le Web sert toujours à se regarder le nombril
- Antispam pour les commentaires de blog : un Captcha sans images
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Des tableaux de données simples, standards et lisibles en CSS et PHP
- Planète Djemma el'Fna
- Tendances Web 2007 : 60 palettes de couleur élégantes pour vos sites Web
- Développeurs Web : c'est le moment de demander une augmentation
- Vos utilisateurs buggent ? Quelques pièges à éviter dans vos applications en ligne
- Quelle est la meilleure architecture pour votre site Web ?
- 7 pratiques Javascript qui changent la vie
- Planète Bosphore
- Astuce PHP : afficher ou masquer le "s" de résultat(s) en une ligne
- Sarkozy ou le retour de la peine de mort dans l'oeuf
- Nouvelle affiche de campagne de Nicolas Sarkozy
- Tutorial PHP : chronométrer le temps de calcul des requêtes SQL (benchmark)
- Démago ou l'urgence médiatique
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Pour la triche à l'école (anglais)
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Je veux être une star underground - 1. l'artiste est un grand malade
- Ceux qui ne veulent pas de Sarkozy comme président
Damien Ravé - Le Caphar a posté 34 commentaires dans les articles suivants :
6. Le mercredi 30 juillet 2008 à 05:51, par Iridium- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Iridium a posté 1 commentaire dans les articles suivants :
7. Le samedi 2 août 2008 à 22:01, par Tchup- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Tchup a posté 1 commentaire dans les articles suivants :
8. Le mercredi 6 août 2008 à 09:40, par Damien Ravé - Le Caphar- Comment perdre vos clients grâce à un nouveau design : la parabole de la ligne 13
- Et toi tu fais quoi dans la vie ? (entretien avec un webdesigner)
- Yahoo UI vs JQuery : quel framework Javascript pour vos applications Web 2.0 ?
- Vous voulez survivre ? Soyez un filtre.
- Comment référencer un site professionnel sur Google : oubliez les meta tags
- Quel est votre manque-à-bloguer ? (encore une chaîne de blogs !)
- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
- Tutoriel PHP : pourquoi passer au développement orienté objet ?
- Stats du blog en juin : 11000 visiteurs, 36000 pages vues, et... 11,19 dollars de recettes publicitaires
- 10 choses que les femmes attendent des hommes d'aujourd'hui
- Nouveau design enrichi : le Potlatch prend le large
- Le marketing est un humanisme
- Carla Bruni nue : que fait Sarkozy ?
- Dix ans après, le Web sert toujours à se regarder le nombril
- Antispam pour les commentaires de blog : un Captcha sans images
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Des tableaux de données simples, standards et lisibles en CSS et PHP
- Planète Djemma el'Fna
- Tendances Web 2007 : 60 palettes de couleur élégantes pour vos sites Web
- Développeurs Web : c'est le moment de demander une augmentation
- Vos utilisateurs buggent ? Quelques pièges à éviter dans vos applications en ligne
- Quelle est la meilleure architecture pour votre site Web ?
- 7 pratiques Javascript qui changent la vie
- Planète Bosphore
- Astuce PHP : afficher ou masquer le "s" de résultat(s) en une ligne
- Sarkozy ou le retour de la peine de mort dans l'oeuf
- Nouvelle affiche de campagne de Nicolas Sarkozy
- Tutorial PHP : chronométrer le temps de calcul des requêtes SQL (benchmark)
- Démago ou l'urgence médiatique
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Pour la triche à l'école (anglais)
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Je veux être une star underground - 1. l'artiste est un grand malade
- Ceux qui ne veulent pas de Sarkozy comme président
Damien Ravé - Le Caphar a posté 34 commentaires dans les articles suivants :
9. Le mercredi 6 août 2008 à 10:45, par Tchup- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Tchup a posté 1 commentaire dans les articles suivants :
10. Le mercredi 6 août 2008 à 15:07, par Damien Ravé - Le Caphar- Comment perdre vos clients grâce à un nouveau design : la parabole de la ligne 13
- Et toi tu fais quoi dans la vie ? (entretien avec un webdesigner)
- Yahoo UI vs JQuery : quel framework Javascript pour vos applications Web 2.0 ?
- Vous voulez survivre ? Soyez un filtre.
- Comment référencer un site professionnel sur Google : oubliez les meta tags
- Quel est votre manque-à-bloguer ? (encore une chaîne de blogs !)
- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
- Tutoriel PHP : pourquoi passer au développement orienté objet ?
- Stats du blog en juin : 11000 visiteurs, 36000 pages vues, et... 11,19 dollars de recettes publicitaires
- 10 choses que les femmes attendent des hommes d'aujourd'hui
- Nouveau design enrichi : le Potlatch prend le large
- Le marketing est un humanisme
- Carla Bruni nue : que fait Sarkozy ?
- Dix ans après, le Web sert toujours à se regarder le nombril
- Antispam pour les commentaires de blog : un Captcha sans images
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Des tableaux de données simples, standards et lisibles en CSS et PHP
- Planète Djemma el'Fna
- Tendances Web 2007 : 60 palettes de couleur élégantes pour vos sites Web
- Développeurs Web : c'est le moment de demander une augmentation
- Vos utilisateurs buggent ? Quelques pièges à éviter dans vos applications en ligne
- Quelle est la meilleure architecture pour votre site Web ?
- 7 pratiques Javascript qui changent la vie
- Planète Bosphore
- Astuce PHP : afficher ou masquer le "s" de résultat(s) en une ligne
- Sarkozy ou le retour de la peine de mort dans l'oeuf
- Nouvelle affiche de campagne de Nicolas Sarkozy
- Tutorial PHP : chronométrer le temps de calcul des requêtes SQL (benchmark)
- Démago ou l'urgence médiatique
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Pour la triche à l'école (anglais)
- 10 fonctions PHP-MySQL que j'utilise tous les jours
- Je veux être une star underground - 1. l'artiste est un grand malade
- Ceux qui ne veulent pas de Sarkozy comme président
Damien Ravé - Le Caphar a posté 34 commentaires dans les articles suivants :
11. Le mercredi 6 août 2008 à 18:23, par Tchup- Tutoriel : créez une FAQ accessible et facile à mettre à jour avec JQuery
Tchup a posté 1 commentaire dans les articles suivants :
Ajouter un commentaire