J'essaie de passer de jQuery 1.x à jQuery 2.x.
J'ai jQuery 1.8 et jQueryUI 1.8, et maintenant je veux passer à jQuery 2.x et améliorer mon application web.
Donc, ma question est de savoir quoi changer et supprimer, comme pour Ajax et events.
Comme ces erreurs dont je parle
Uncaught TypeError: Object [object Object] has no method 'live'
Des fonctions comme .on () et .ajax () en ont-elles changé? (Je sais que .live était obsolète).
P.S. Je dois ajouter Zurb Foundation 5 qui utilise jQuery 2.
Si vous envisagez de mettre à niveau vers jQuery 1.x vers jQuery 2.x, pensez à cela et procédez comme suit:
1. Plus de support pour IE6/7/8
Je pense toujours qu'il est un peu prématuré d'abandonner IE8 mais l'équipe ne pouvait plus attendre. jQuery 2.0 supprime tout l'héritage IE code pour la sélection des nœuds, la manipulation DOM, la gestion des événements et Ajax.
2. La fonction de construction personnalisée a été améliorée dans la version 2.0
vous pouvez donc exclure l'un des 12 modules inutilisés et réduire jQuery en dessous de 10 Ko. Les modules qui peuvent être omis sont: Liste des fonctions
Dois-je mettre à niveau?
Il est important de comprendre que jQuery 2.0 a la parité API avec jQuery 1.9. Il existe un petit nombre de corrections de bogues mais aucune nouvelle fonctionnalité.
Cependant, si vous êtes l'un de ces développeurs chanceux qui a abandonné le support pour IE6/7/8, prenez jQuery 2.0 et ne regardez pas en arrière.
offset
dans les propriétés de position, par ex. le code $element.position({my: 'center center', at: 'center center', offset: '5 -10'})
doit être remplacé par $element.position({my: 'center center', at: 'center+5 center-10'})
.$element.bind()
, $element.live()
, $element.delegate()
pour attribuer un gestionnaire d'événements, utilisez $element.on()
.$.browser
, Essayez plutôt d'utiliser la détection des fonctionnalités ($.support
).deferred.isRejected()
, deferred.isResolved()
, utilisez deferred.state()
à la place. N'utilisez pas deferred.pipe()
, la méthode deferred.then()
doit être utilisée à la place.$elements.size()
, utilisez plutôt la propriété $elements.length
. La méthode .size()
est fonctionnellement équivalente à la propriété .length
; cependant, la propriété .length
est préférée car elle n'a pas la surcharge d'un appel de fonction..trigger()
ed "clic" a maintenant le même état que dans une action lancée par l'utilisateur..data()
, par exemple, ui-dialog
Au lieu de dialog
. ( http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys ).$.ui.contains()
, utilisez $.contains()
à la place.this.uuid
Et un espace de noms d'événement this.eventNamespace = "." + this.widgetName + this.uuid
. Ne générez pas de choses similaires manuellement.$element.focus(n)
- il est obsolète. Utilisez setTimeout(function() { $element.focus(); }, n);
.$element.zIndex()
- il est obsolète.$.ui.keyCode.NUMPAD_*
- elles sont supprimées.$element.data('someWidget')
pour récupérer l'instance de widget. Utilisez la méthode instance()
: $element.someWidget('instance')
. Contrairement à d'autres méthodes de plugin, la méthode instance()
est sûre d'appeler n'importe quel élément. Si l'élément n'est pas une instance du widget donné, la méthode renvoie undefined
: $('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */
.Guides de mise à niveau d'origine et liste complète des modifications:
Dans jQuery 1.9, plusieurs méthodes ont été supprimées qui étaient disponibles dans les versions précédentes de jquery.
Si vous utilisez ces méthodes, alors oui, vous rencontrerez des problèmes.
Sinon, vous ne rencontrerez pas de problèmes.
L'utilisation du plugin jQuery migrate que vous avez mentionné résoudra tous les problèmes que vous pourriez avoir avec la mise à niveau de 1.8 vers 1.9+ (qui inclut 2.x) et il vous informera également de toutes les méthodes que vous utilisez qui ont été supprimées lorsque vous regardez la console. Le plugin de migration est le meilleur moyen de mettre à niveau jquery de 1.6x-1.8x à 1.9 +/2.0 +. Incluez jquery 2.x, puis incluez le plug-in de migration, puis ouvrez votre console et remplacez les anciennes méthodes jusqu'à ce que le plug-in de migration cesse de donner vos avertissements. À ce stade, vous devriez pouvoir supprimer en toute sécurité le plug-in de migration.