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.
