Actualizar de jQuery 1.x a jQuery 2.x

6 minutos de lectura

avatar de usuario
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.

  • 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

avatar de usuario
Víctor

  1. 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'}).
  2. No utilice $element.bind(), $element.live(), $element.delegate() para asignar un controlador de eventos, use $element.on().
  3. No utilice la exploración del navegador con $.browserintente usar la detección de funciones en su lugar ($.support).
  4. No utilice deferred.isRejected(), deferred.isResolved()usar deferred.state() en cambio. No utilice deferred.pipe()la deferred.then() en su lugar se debe utilizar el método.
  5. 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.
  6. 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.
  7. Se modificó la convención de nomenclatura para .data() llaves, por ejemplo, ui-dialog en vez de dialog. (http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys).
  8. No utilice $.ui.contains()usar $.contains() en cambio.
  9. Cada instancia de widget ya tiene un identificador único this.uuid y espacio de nombres de eventos this.eventNamespace = "." + this.widgetName + this.uuid. No genere cosas similares manualmente.
  10. No utilice $element.focus(n) – está en desuso. Usar setTimeout(function() { $element.focus(); }, n);.
  11. No utilice $element.zIndex() – está en desuso.
  12. No utilice $.ui.keyCode.NUMPAD_* constantes – se eliminan.
  13. No utilice $element.data('someWidget') para recuperar la instancia del widget. Usar instance() método: $element.someWidget('instance'). A diferencia de otros métodos de complemento, el instance() El método es seguro para llamar a cualquier elemento. Si el elemento no es una instancia del widget dado, el método devuelve undefined: $('<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

avatar de usuario
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


avatar de usuario
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

¿Ha sido útil esta solución?