JQuery, une librairie javascript performante

200815/03

jqueryParmi les meilleures librairies Javascript open source, on trouve ExtJS, Prototype et JQuery.

Nous allons faire une courte présentation de cette dernière qui réconcilie les développeurs les plus réfractaires avec le javascript pour enrichir leurs pages web.

JQuery, qui fêtait ses 2 ans en janvier 2008, présente plusieurs avantages sur ses concurrents :

  • une version compressée de 14 Ko seulement (contre 100 Ko pour Prototype et 400 Ko pour ExtJS),
  • un apprentissage très rapide, sous réserve de posséder les bases du DOM( Document Object Model),
  • une documentation précise, exhaustive, et complète,

L'article n'a pas pour vocation a se substituer aux nombreux tuturiaux existants déjà, vers lesquels le développeur devra se tourner de préférence. Il veut juste montrer que le javascript peut servir à enrichir les pages web, dès lors qu'il n'est pas obstructif et qu'il permet d'améliorer l'ergonomie des sites web.

$ et la magie jQuery s'opère

Pas de faute de frappe dans le titre, le $ constitue toute la "magie" de jQuery.

Un objet jQuery est une boîte contenant un ensemble de noeuds du DOM.

Pour trouver tous les paragraphes du DOM, il suffit d'écrire :

  1. $('p')

Pour trouver tous les paragraphes qui ont la classe 'plop' du DOM, on écrira :

  1. $('p.plop')

Simple, non ? C'est le credo de jQuery : write less, do more.

Allons un peu plus loin, avec une structure HTML telle que :

 

Un exemple avec une liste
  1. <ul id="menu">
  2. <li><a href="#l" id="item1" clas="current">lien 1</a></li>
  3. <li><a href="#" id="item2">lien 2</a></li>
  4. <li><a href="#" id="item3">lien 3</a></li>
  5. <li><a href="#" id="item4">lien 4</a></li>
  6. </ul>
  7.  
  8. <div id="content1"><p>contenu</p></div>
  9. <div id="content2"><p>contenu</p></div>
  10. <div id="content3"><p>contenu</p></div>
  11. <div id="content4"><p>contenu</p></div>

 

Il va falloir au chargement de la page masquer les contenus content2, content3 et content4 via javascript et non via la CSS afin de rester non-obstructif ; ceci s'effectue très simplement grrâce à Jquery et se passe de tous commentaires :

  1. $("div#content1").css({ display: "none"});
  2. $("div#content2").css({ display: "none"});
  3. $("div#content3").css({ display: "none"});
  4. $("div#content4").css({ display: "none"});

 

L'idée est de pouvoir récupérer l'id du lien cliqué, de lui appliquer une classe CSS définie, et d'afficher le contenu relatif au lien tout en masquant le contenu relatifs aux autres liens.

  1. $(document).ready(function() {
  2.    // on masque les contenus
  3.    $("div#content1").css({ display: "none"});
  4.    $("div#content2").css({ display: "none"});
  5.    $("div#content3").css({ display: "none"});
  6.    $("div#content4").css({ display: "none"});   

  7.   // à l'évènement onclick sur un lien du menu
  8.   $("ul#menu > li > a").click(function() {
  9.     // id du lien cliqué
  10.     var idLink = $(this).attr("id");
  11.    
  12.     // on récupère le nombre uniquement
  13.     var NumberLink = idLink.split('item');
  14.    
  15.     // nombre de li total
  16.     var NumberofLi = $("ul#menu li").length;
  17.  
  18.     // on masque tous les contenus sauf celui du lien appelé
  19.     for (i=1; i <= NumberofLi; i++) {
  20.       $("#content"+i).not(idLink).hide();
  21.     }
  22.    
  23.     // on montre le contenu du lien appelé
  24.     $("#content"+NumberLink[1]).show();
  25.    
  26.     // on enlève la class current de la li la possédant
  27.     $("ul#menu > li.current").removeClass("current");
  28.    
  29.     // on ajoute la class current à la li parente cliquée
  30.     $(this).parents("li").addClass("current");
  31.   });
  32.  
  33. });

 

 Ce qu'on voit très bien avec Jquery, c'est qu'on a aucune injection de javascript dans la page HTML.

A partir du moment où le code HTML est bien structuré, sémantique, Jquery peut parcourir le DOM très simplement, de manière non-obstructive, avec une syntaxe très rapide d'apprentissage. 

Dernière modification : 15/03/2008

Catégorie : Web - Jquery -

Commentaires

Ajouter un commentaire

Les champs en gras sont obligatoires.

Commentaire:

Anti-spam :
Veuillez répondre à la question suivante avant de valider votre commentaire.

La somme de 0 plus 8 est égale à