Upgrade van jQuery 1.x naar jQuery 2.x

Ik probeer te upgraden van jQuery 1.x naar jQuery 2.x.

Ik heb jQuery 1.8 en jQueryUI 1.8, en nu wil ik upgraden naar jQuery 2.x en mijn web-app verbeteren.

Dus mijn vraag is wat ik moet veranderen en verwijderen, zoals voor Ajaxen evenementen.

Zoals deze fouten waar ik het over heb

Uncaught TypeError: Object [object Object] has no method 'live'

Hebben functies zoals .on() en .ajax() iets veranderd? (Ik weet dat .live verouderd was).

P.S. Ik moet Zurb Foundation 5 toevoegen die jQuery 2 gebruikt.


Antwoord 1, autoriteit 100%

  1. Gebruik de optie offsetniet in positie-eigenschappen, b.v. code $element.position({my: 'center center', at: 'center center', offset: '5 -10'})moet worden vervangen door $element.position({my: 'center center', at: 'center+5 center-10'}).
  2. Gebruik $element.bind(), $element.live(), $element.delegate()niet om een ​​gebeurtenis toe te wijzen handler, gebruik $element.on().
  3. Gebruik geen browsersniffing met $.browser, probeer in plaats daarvan functiedetectie te gebruiken ($.support).
  4. Gebruik niet deferred.isRejected(), deferred.isResolved(), gebruik in plaats daarvan deferred.state(). Gebruik deferred.pipe()niet, in plaats daarvan moet de methode deferred.then()worden gebruikt.
  5. Gebruik niet de $elements.size()methode, maar gebruik in plaats daarvan de $elements.lengtheigenschap. De .size()methode is functioneel equivalent aan de .lengtheigenschap; de eigenschap .lengthheeft echter de voorkeur omdat deze niet de overhead van een functieaanroep heeft.
  6. Checkbox/radiostatus in een .trigger()ed “klik”-gebeurtenis heeft nu dezelfde status als in een door de gebruiker gestarte actie.
  7. Naamconventie gewijzigd voor .data()-sleutels, bijv. ui-dialogin plaats van dialog. (http://jqueryui.com/upgrade-guide /1.9/#changed-naming-convention-for-data-keys).
  8. Gebruik $.ui.contains()niet, gebruik in plaats daarvan $.contains().
  9. Elke widgetinstantie heeft al een unieke id this.uuiden gebeurtenisnaamruimte this.eventNamespace = "." + this.widgetName + this.uuid. Genereer soortgelijke dingen niet handmatig.
  10. Gebruik $element.focus(n)niet – het is verouderd. Gebruik setTimeout(function() { $element.focus(); }, n);.
  11. Gebruik $element.zIndex()niet – het is verouderd.
  12. Gebruik geen $.ui.keyCode.NUMPAD_*constanten – deze zijn verwijderd.
  13. Gebruik $element.data('someWidget')niet om de widgetinstantie op te halen. Gebruik de methode instance(): $element.someWidget('instance'). In tegenstelling tot andere plug-in-methoden, is de methode instance()veilig om elk element aan te roepen. Als het element geen instantie is van de gegeven widget, retourneert de methode undefined: $('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */te genereren.

Originele upgradehandleidingen en volledige lijst met wijzigingen:


Antwoord 2, autoriteit 49%

Als u overweegt om te upgraden naar jQuery 1.x naar jQuery 2.x, moet u dit overwegen en deze stappen nemen 🙂 :

1.Geen ondersteuning meer voor IE6/7/8

Ik denk nog steeds dat het een beetje voorbarig is om IE8 te verlaten, maar het team
kon niet langer wachten. jQuery 2.0 verwijdert alle legacy IE-code
voor knooppuntselectie, DOM-manipulatie, gebeurtenisafhandeling en Ajax.

2.Aangepaste build-functie is verfijnd in versie 2.0

zodat u elk van de 12 ongebruikte modules kunt uitsluiten en jQuery onder de 10Kb kunt verkleinen. De modules die kunnen worden weggelaten zijn: List of Functions

Moet ik upgraden?

Het is belangrijk om te begrijpen dat jQuery 2.0 een API-pariteit heeft met jQuery 1.9. Er zijn een klein aantal bugfixes, maar geen nieuwe functies.

Als u echter een van die gelukkige ontwikkelaars bent die de ondersteuning voor IE6/7/8 heeft laten vallen, neem dan jQuery 2.0 en kijk niet meer achterom.


Antwoord 3, autoriteit 7%

In jQuery 1.9 zijn verschillende methoden verwijderd die beschikbaar waren in eerdere versies van jQuery.

Als u deze methoden gebruikt, dan zult u inderdaad problemen tegenkomen.

Anders kom je niet in de problemen.

Het gebruik van de jQuery-migratieplug-in die u noemde, lost alle problemen op die u zou kunnen hebben bij het upgraden van 1.8 naar 1.9+ (inclusief 2.x) en het zal u ook informeren over alle methoden die u gebruikt die verwijderd als u naar de console kijkt. De plug-in voor migreren is de beste manier om jQuery te upgraden van 1.6x-1.8x naar 1.9+/2.0+. Voeg jQuery 2.x toe, voeg vervolgens de migratie-plug-in toe, open vervolgens uw console en vervang oude methoden totdat de migratie-plug-in stopt met het geven van uw waarschuwingen. Op dat moment zou u de plug-in voor migreren veilig moeten kunnen verwijderen.

Other episodes