Passage de jQuery 1.5.x vers jQuery 1.6

Comme vous avez pu le lire sur un de mes billets précédents ou sur la toile, jQuery 1.6 est sortie. Oui, mais cette sortie fait débat et les modifications qu’elle apporte sont parfois gênantes pour tous les utilisateurs de plugins ou tous les développements conséquents liés au versions antérieures de jQuery 1.6.

jquery-1-5-x-vers-jquery-1-6

Si l’on résume les gros changements pouvant être cassants :

En principe, les versions de jQuery issue de la même branche gardent une certaine rétro-compatibilité, mais pour cette version 1.6 ce ne fût pas le cas.

On notera les modifications des méthodes .attr(), .removeProp(), et .prop()
La méthode prop() remplacera la méthode attr() dans de très nombreux cas.
Les versions antérieures à la 1.6 de jQuery ne faisaient pas la différence entre propriété et attribut et géraient la totalité avec la méthode .attr().

Exemples type :

<input type="checkbox" id="mychkbox" checked> <!-- Écriture valide en HTML5 -->

Voir le tableau d’alert plus bas pour comprendre les différences entre les versions 1.5.x et 1.6, ainsi que la 1.6.1 (qui est arrivée)

A noter que : $(this).prop(« checked ») permet de récupérer la même valeur que this.checked.
A noter aussi que : $(selection).is(« : checked ») fonctionne pour toutes les versions de jQuery.

Dans les changements, nous retrouvons aussi des améliorations pour la method .css() qui permet maintenant d’utiliser les déplacements relatifs comme valeur d’une propriété. Avant cette version, nous pouvions le faire, mais dans la méthode animate().

Exemple :

// Déplacer le bord gauche d'un élément de 20 px
$("#madiv").css("left", "+=20px");

Du changement aussi dans la method .data(), avec une meilleure gestion et de bien meilleures performances.

Amélioration, entre autre, des animations (plusieurs peuvent être en cours au même moment et sur le même élément), de la méthode .promise(), des Deferred Object etc… La liste et les liens vers les modifications apportées par la version 1.6 de jQuery se trouvent ici.

E d’après cette liste nous pouvons noter que :

La version 1.6 ajoute : .closest( jQuery object ), .closest( element ) pour la méthode .closest()
Pour find() : .find( jQuery object )et .find( element )
Pour .is() : .is( jQuery object ), .is( element ) et .is( function(index) )
Pour jQuery.map() : jQuery.map( arrayOrObject, callback( value, indexOrKey ) )
jQuery.holdReady() : joue sur l’évènement « ready event » de jQuery. autorise ou non l’évènement.

Source : http://api.jquery.com/category/version/1.6/

Ce que l’on peut en déduire, que la version 1.6 de jQuery est beaucoup plus logique et améliore grandement les performances. De plus certains éléments ajoutés, comme à la method css(), sont très pratiques.

Cependant, je déconseillerais aux utilisateurs de sites avec des plugins ou des codes construits pour des versions antérieures à la 1.6 d’éviter de migrer sans avoir testé et s’être assuré de la compatibilité avec la nouvelle version de jQuery.

Les débats ont tout de même touchés l’équipe de jQuery et une version 1.6.1 devrait voir le jour et avec des modifications de rétro-compatibilité, surtout au niveau des method attr() et prop().

En reprenant l’exemple de la balise checked, avec la 1.6, nous avons cela :

alert($("#mychkbox").attr("checked")) // result &gt;&gt; ""
alert($("#mychkbox").prop("checked")) // true
alert(document.getElementById("mychkbox").checked") // true

Mais dans la version 1.6.1 et les versions antérieures à la 1.6 :

alert($("#mychkbox").attr("checked")) // true
alert($("#mychkbox").prop("checked")) // true (in 1.6.1 only)
alert(document.getElementById("mychkbox").checked") // true

Donc la rétro-compatibilité sera respectée, ce qui ne signifie pas qu’il faudra continuer à développer ainsi, mais plutôt s’orienter vers une logique souhaitée par la nouvelle version de jQuery. Une logique logique^^

Version prévue fin de semaine normalement.

Source

Articles qui peuvent vous intéresser :

Comments
  1. LudiKadmin

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*