ucefkh
Estoy intentando actualizar de jQuery 1.x a jQuery 2.x.
Tengo jQuery 1.8 y jQueryUI 1.8 y ahora quiero actualizar a jQuery 2.x y mejorar mi aplicación web.
Entonces mi pregunta es qué cambiar y eliminar, como para Ajax y eventos.
Como estos errores de los que estoy hablando
Uncaught TypeError: Object [object Object] has no method 'live'
¿Funciones como .on() y .ajax() cambiaron alguna? (Sé que .live estaba en desuso).
PD: tengo que agregar Zurb Foundation 5 que usa jQuery 2.
Víctor
- No utilice
offset
opción en propiedades de posición, por ejemplo, código$element.position({my: 'center center', at: 'center center', offset: '5 -10'})
debe ser reemplazado con$element.position({my: 'center center', at: 'center+5 center-10'})
. - No utilice
$element.bind()
,$element.live()
,$element.delegate()
para asignar un controlador de eventos, use$element.on()
. - No utilice la exploración del navegador con
$.browser
intente usar la detección de funciones en su lugar ($.support
). - No utilice
deferred.isRejected()
,deferred.isResolved()
usardeferred.state()
en cambio. No utilicedeferred.pipe()
ladeferred.then()
en su lugar se debe utilizar el método. - No use el
$elements.size()
método, utiliza el$elements.length
propiedad en su lugar. los.size()
método es funcionalmente equivalente al.length
propiedad; sin embargo, el.length
Se prefiere la propiedad porque no tiene la sobrecarga de una llamada de función. - Casilla de verificación/estado de radio en un
.trigger()
El evento ed “click” ahora tiene el mismo estado que en una acción iniciada por el usuario. - Se modificó la convención de nomenclatura para
.data()
llaves, por ejemplo,ui-dialog
en vez dedialog
. (http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys). - No utilice
$.ui.contains()
usar$.contains()
en cambio. - Cada instancia de widget ya tiene un identificador único
this.uuid
y espacio de nombres de eventosthis.eventNamespace = "." + this.widgetName + this.uuid
. No genere cosas similares manualmente. - No utilice
$element.focus(n)
– está en desuso. UsarsetTimeout(function() { $element.focus(); }, n);
. - No utilice
$element.zIndex()
– está en desuso. - No utilice
$.ui.keyCode.NUMPAD_*
constantes – se eliminan. - No utilice
$element.data('someWidget')
para recuperar la instancia del widget. Usarinstance()
método:$element.someWidget('instance')
. A diferencia de otros métodos de complemento, elinstance()
El método es seguro para llamar a cualquier elemento. Si el elemento no es una instancia del widget dado, el método devuelveundefined
:$('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */
.
Guías de actualización originales y lista completa de cambios:
-
Buena respuesta 🙂 muy precisa
– ucefkh
23/09/2014 a las 21:49
-
14. Verifique qué versión de jQuery requieren sus otras bibliotecas JS descargadas.
– Jaran
18/11/2015 a las 11:30
ucefkh
Si está pensando en actualizar a jQuery 1.x a jQuery 2.x, debe considerar esto y seguir estos pasos :):
1.No más soporte para IE6/7/8
Sigo pensando que es un poco prematuro abandonar IE8, pero el equipo no pudo esperar más. jQuery 2.0 elimina todo el código de IE heredado para la selección de nodos, la manipulación de DOM, el manejo de eventos y Ajax.
2.La función de creación personalizada se ha perfeccionado en la versión 2.0
por lo que puede excluir cualquiera de los 12 módulos no utilizados y reducir jQuery por debajo de 10Kb. Los módulos que se pueden omitir son: Lista de funciones
¿Debería actualizar?
Es importante comprender que jQuery 2.0 tiene paridad de API con jQuery 1.9. Hay una pequeña cantidad de correcciones de errores, pero no hay nuevas funciones.
Sin embargo, si es uno de esos afortunados desarrolladores que ha dejado de admitir IE6/7/8, toma jQuery 2.0 y no mires atrás.
-
Solo para tener en cuenta, a partir de enero de 2015, IE 8 sigue siendo el 19% de la participación de mercado, según netmarketshare.com/…
–Brian Burns
19 de febrero de 2015 a las 17:35
-
Sí, pero puede agregar la corrección de IE (compruebe si el cliente está usando IE y luego cargue la biblioteca que lo arreglará) ¿suena bien?
– ucefkh
24 de febrero de 2015 a las 2:41
-
@bburns.km netmarketshare.com es el único de estos muchos sitios informando números tan altos de IE. Gmail ya no es compatible con IE8 (solo con su versión HTML básica). Creo que es seguro deshacerse de él.
– elegante
18 mayo 2015 a las 10:53
-
Solo para mencionar en el momento de este comentario que Microsoft finalizó el soporte para Internet Explorer 7/8/9/10 el 12 de enero de 2016. Espero obligar a los usuarios a migrar a IE11 (win7) y Edge (win10). microsoft.com/en-ca/WindowsForBusiness/End-of-IE-support . También puede ver las estadísticas de los navegadores de W3C w3schools.com/browsers/browsers_stats.asp
– Máximo Décimo
27 de enero de 2016 a las 15:28
-
Parece que IE8 ahora tiene menos del 5% de la cuota de mercado según el mismo gráfico citado anteriormente. En mi propio sitio es menos del 1% del 5% de los usuarios de IE… prácticamente nada
– PandaWood
19 de agosto de 2016 a las 23:02
kevin b
En jQuery 1.9, se eliminaron varios métodos que estaban disponibles en versiones anteriores de jquery.
Si está utilizando esos métodos, entonces sí, tendrá problemas.
De lo contrario, no, no tendrás problemas.
El uso del complemento de migración de jQuery que mencionó resolverá todos los problemas que podría tener con la actualización de 1.8 a 1.9+ (que incluye 2.x) y también le informará sobre los métodos que está utilizando que se han eliminado cuando miras la consola. El complemento de migración es la mejor manera de actualizar jquery de 1.6x-1.8x a 1.9+/2.0+. Incluya jquery 2.x, luego incluya el complemento de migración, luego abra su consola y reemplace los métodos antiguos hasta que el complemento de migración deje de dar sus advertencias. En ese momento, debería poder eliminar de forma segura el complemento de migración.
-
Gracias Kevin, no subestimes a nadie, ya que ni siquiera pregunto aquí debido a esta gente que vota negativamente, de todos modos, gracias 🙂
– ucefkh
17/04/2014 a las 17:33
no debería tener que cambiar nada de 1.8 a 2.x, aparte de eliminar el soporte para oldie.
– Kevin B.
17 abr 2014 a las 17:17
jQuery 1.x (1.9+) y 2.x tienen la misma API. La única diferencia es que 2.x no es compatible con IE 6-8. Por favor mira: jquery.com/upgrade-guide/1.9
– genérico
17/04/2014 a las 17:22
el punto es que ni siquiera intentaste hacer la actualización, o tuviste un problema y no nos lo proporcionaste. de cualquier manera, realmente no podemos responder eso. la respuesta es simplemente “no deberías tener ningún problema”
– Kevin B.
17/04/2014 a las 17:23
No lo harás. Los métodos ajax de jquery no han cambiado significativamente desde jquery 1.5
– Kevin B.
17/04/2014 a las 17:25
Luego haga otra pregunta con esa información en su lugar. simplemente preguntar si hay algún problema con la actualización es demasiado amplio. Algo que podría causarte problemas a ti puede no afectarme a mí, por ejemplo.
– Kevin B.
17 abr 2014 a las 17:27