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%
- Gebruik de optie
offset
niet 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'})
. - Gebruik
$element.bind()
,$element.live()
,$element.delegate()
niet om een gebeurtenis toe te wijzen handler, gebruik$element.on()
. - Gebruik geen browsersniffing met
$.browser
, probeer in plaats daarvan functiedetectie te gebruiken ($.support
). - Gebruik niet
deferred.isRejected()
,deferred.isResolved()
, gebruik in plaats daarvandeferred.state()
. Gebruikdeferred.pipe()
niet, in plaats daarvan moet de methodedeferred.then()
worden gebruikt. - Gebruik niet de
$elements.size()
methode, maar gebruik in plaats daarvan de$elements.length
eigenschap. De.size()
methode is functioneel equivalent aan de.length
eigenschap; de eigenschap.length
heeft echter de voorkeur omdat deze niet de overhead van een functieaanroep heeft. - Checkbox/radiostatus in een
.trigger()
ed “klik”-gebeurtenis heeft nu dezelfde status als in een door de gebruiker gestarte actie. - Naamconventie gewijzigd voor
.data()
-sleutels, bijv.ui-dialog
in plaats vandialog
. (http://jqueryui.com/upgrade-guide /1.9/#changed-naming-convention-for-data-keys). - Gebruik
$.ui.contains()
niet, gebruik in plaats daarvan$.contains()
. - Elke widgetinstantie heeft al een unieke id
this.uuid
en gebeurtenisnaamruimtethis.eventNamespace = "." + this.widgetName + this.uuid
. Genereer soortgelijke dingen niet handmatig. - Gebruik
$element.focus(n)
niet – het is verouderd. GebruiksetTimeout(function() { $element.focus(); }, n);
. - Gebruik
$element.zIndex()
niet – het is verouderd. - Gebruik geen
$.ui.keyCode.NUMPAD_*
constanten – deze zijn verwijderd. - Gebruik
$element.data('someWidget')
niet om de widgetinstantie op te halen. Gebruik de methodeinstance()
:$element.someWidget('instance')
. In tegenstelling tot andere plug-in-methoden, is de methodeinstance()
veilig om elk element aan te roepen. Als het element geen instantie is van de gegeven widget, retourneert de methodeundefined
:$('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */
te genereren.
Originele upgradehandleidingen en volledige lijst met wijzigingen:
- jQuery Core 1.9-upgradehandleiding
- jQuery UI 1.9 Upgradehandleiding
- jQuery UI 1.10 Upgradehandleiding
- jQuery UI 1.11 Upgradehandleiding
- jQuery UI 1.12 Upgradehandleiding
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.