jQuery.info
Découvrir et utiliser jQuery, la librairie javascript du XXIIème siècle

Accueil du site > Actualités > Vers jQuery 1.1

Vers jQuery 1.1

vendredi 12 janvier 2007, par Fil, John Resig

Toutes les versions de cet article : [français] [italiano]

Le 14 janvier, John Resig livrait la nouvelle version de jQuery, jQuery 1.1. Pour cette version — qui marque le premier anniversaire du projet — beaucoup de soins ont été apportés à l’amélioration de la vitesse globale de la librairie, et surtout à la rapidité d’exécution des sélecteurs.


Voici quelques points remarquables concernant la version 1.1 :
- Ses sélecteurs fonctionnent 10 à 20 fois plus vite que dans la version 1.0.4 ;
- La documentation a été entièrement revue ;
- La complexité de l’API (interface de programmation) a été réduite de 47 % ;
- des tas de bugs ont été réparés ;
- on fait le plein de nouvelle capacités ;
- ... et tout ça reste toujours d’une taille inférieure à 19 ko

Changements d’API

Il est important de noter qu’il y a eu beaucoup de changements dans l’API. Ce qui fait qu’un script prévu pour jQuery 1.0.4 ne fonctionnera sans doute plus avec jQuery 1.1.

nth-child()

Tout d’abord, un bug important a été réparé : selon la spécification de CSS 3, le sélecteur :nth-child() devait démarrer à 1, et non à 0 comme cela avait été implanté par erreur dans jQuery 1.0.x. Cette correction de bug peut affecter votre code.

Le code suivant

// 1.0.x: Lire la première colonne d'une table
$("td:nth-child(0)")

doit donc désormais être écrit ainsi :

// 1.1: Lire la première colonne d'une table
$("td:nth-child(1)")

.filter(tableau)

Autre changement : l’ancien sélecteur .filter([".foo", ".bar"]) (qui récupérait tous les éléments de classe .foo OU .bar) s’écrit maintenant de façon beaucoup plus simple, avec une virgule pour séparer les possibilités : .filter(".foo, .bar") ; l’ancienne syntaxe est supprimée.

Des méthodes mises à la retraite

Les méthodes qui suivent ont été renommées/réorganisées ; voici comment vous pouvez continuer à les utiliser :

Ancien (1.0.x)Nouveau (1.1)
.ancestors() .parents()
.top() .css("top")
.left() .css("left")
.position() .css("position")
.float() .css("float")
.overflow() .css("overflow")
.color() .css("color")
.background() .css("background")
.id() .attr("id")
.title() .attr("title")
.name() .attr("name")
.href() .attr("href")
.src() .attr("src")
.rel() .attr("rel")
.oneblur(fn) .one("blur",fn)
.onefocus(fn) .one("focus",fn)
.oneload(fn) .one("load",fn)
.oneresize(fn) .one("resize",fn)
.onescroll(fn) .one("scroll",fn)
.oneunload(fn) .one("unload",fn)
.oneclick(fn) .one("click",fn)
.onedblclick(fn) .one("dblclick",fn)
.onemousedown(fn) .one("mousedown",fn)
.onemouseup(fn) .one("mouseup",fn)
.onemousemove(fn) .one("mousemove",fn)
.onemouseover(fn) .one("mouseover",fn)
.onemouseout(fn) .one("mouseout",fn)
.onechange(fn) .one("change",fn)
.onereset(fn) .one("reset",fn)
.oneselect(fn) .one("select",fn)
.onesubmit(fn) .one("submit",fn)
.onekeydown(fn) .one("keydown",fn)
.onekeypress(fn) .one("keypress",fn)
.onekeyup(fn) .one("keyup",fn)
.oneerror(fn) .one("error",fn)
.unblur(fn) .unbind("blur",fn)
.unfocus(fn) .unbind("focus",fn)
.unload(fn) .unbind("load",fn)
.unresize(fn) .unbind("resize",fn)
.unscroll(fn) .unbind("scroll",fn)
.ununload(fn) .unbind("unload",fn)
.unclick(fn) .unbind("click",fn)
.undblclick(fn) .unbind("dblclick",fn)
.unmousedown(fn) .unbind("mousedown",fn)
.unmouseup(fn) .unbind("mouseup",fn)
.unmousemove(fn) .unbind("mousemove",fn)
.unmouseover(fn) .unbind("mouseover",fn)
.unmouseout(fn) .unbind("mouseout",fn)
.unchange(fn) .unbind("change",fn)
.unreset(fn) .unbind("reset",fn)
.unselect(fn) .unbind("select",fn)
.unsubmit(fn) .unbind("submit",fn)
.unkeydown(fn) .unbind("keydown",fn)
.unkeypress(fn) .unbind("keypress",fn)
.unkeyup(fn) .unbind("keyup",fn)
.unerror(fn) .unbind("error",fn)

Heureusement, les fonctions éliminées figurent parmi les moins souvent utilisées !

A noter, contrairement à ce qui a été annoncé initialement, les fonctions .width() et .height() n’ont pas été supprimées.

Pour rechercher ces fonctions dans vos scripts, voici l’expression rationnelle qui permet de les repérer toutes :

ce qui peut s’utiliser par exemple de la façon suivante en ligne de commande :

grep -E "cette-expression" `find . -name '*.js'`

Le plugin compat

Pour bénéficier des améliorations de jQuery sans revoir tous vos scripts (au moins dans un premier temps), vous pouvez charger, juste après jquery.js et juste avant vos scripts, le plugin de compatibilité 1.0 jquery-compat-1.0.js, qui définit les fonctions supprimées, et décale d’un cran les :nth-child(). Nous conseillons toutefois d’adapter rapidement vos scripts à jQuery 1.1 ; ce n’est pas si difficile, et cela en vaut la peine !

Voici comment utiliser le plugin compat :

<html>
<head>
 <script src="jquery-1.1.js"></script>
 <script src="jquery.compat-1.0.js"></script>
 <script>
   $(document).ready(function(){
       // Votre vieux code basé sur jQuery 1.0.x
       var id = $("div:nth-child(0)").id();
   });
 </script>
</head>
<body></body>
</html>

Si vous avez des questions ou des remarques, n’hésitez pas à utiliser le forum ci-dessous.

P.-S.

Ceci est une synthèse de deux posts de John Resig sur le blog jQuery : http://jquery.com/blog/2007/01/08/j... http://jquery.com/blog/2007/01/11/j.... Traduction/adaptation : Fil.

Répondre à cet article


Derniers commentaires