jQuery 3.0
Plus de 3 ans après le passage à jQuery 2.0, une nouvelle version sort, avec son lot de nouveautés et d'incompatibilités.
Certains d'entre vous s'en souviennent peut-être, le passage à la version 2 avait créé quelques soucis avec l'abandon d'Internet explorer 6, 7 et 8 au profit d'un gros gain de vitesse sur mobile.
Même si il n'y a pas de changement aussi gros que l'abandon du support d'un navigateur, il y a de grandes chances pour que le passage ne se fasse pas tout seul et que de nombreux sites cassent lors de la mise à jour. Pour vous aider à faire le tri, je vous propose un résumé des points les plus chauds du change log.
1/ show() et hide : Le fonctionnement des methods show() et hide() a changé pour éviter de marcher sur les framework responsive comme Foundation et Bootstrap. Si vous avez un élément défini comme "display: none" dans votre CSS, il ne réapparaitra plus avec .show().
2/ data() : Pour coller aux spécifications HTML5, data('fooBar') et data('foo-bar') vont tout les deux chercher le même attribut. Ce point peut mener à des confusions, bien que je ne pense pas que du code réel puisse réelement être impacté.
3/ jQuery.Deferred : Quelques changements au niveau de la prise en charge pour mieux coller au fonctionnement des promises; Si vous utilisez des promises jQuery, je vous conseille de repasser sur votre code lors du changement de version, les différences sont subtiles et peuvent mener à des bugs complexes à retrouver.
4/ width() et height() ne retournent plus des valeurs arondies, mais les valeurs décimales telles que vue dans un analyseur de DOM.
5/ .load(), .unload() et .error ont été supprimées. Elles sont dépréciées depuis jQuery 1.8, c'est donc normal.
Voilà ! Je vous laisse découvrire la liste des autres changements (positifs et n'amenant pas de problème de compatibilité) dans le changelog complet, avec des explications plus poussées sur les changement que j'ai indiqué. Le plus gros changement est une grosse accélération lors des recalcul de CSS et lors de l'usage de certains selectors CSS comme :visible.