Se liberó la versión 1.9 de jQuery. Esta versión marca una importante evolución en jQuery:
- Muchas funcionalidades obsoletas han sido retiradas del framework para volverlo más liviano y limpio; y para prepararnos a la versión 2.0.
- Será la última versión con soporte a IE6, IE7 e IE8.
Dicho esto, no lo vayan a implementar directamente en producción. Hay una serie de detalles que deben de considerar antes de realizar la migración. La lista completa de cambios de la versión 1.9 pueden leerla aquí (en inglés).
Plugin de migración de jQuery: jQuery Migrate
El plugin de migración de jQuery nos facilita el proceso de migración. El plugin ofrece dos funcionalidades esenciales:
- Re-habilita las funcionalidades obsoletas, compatibles con el código de la v.1.8 por lo que nuestra aplicación no tendrá ninguna ruptura; y,
- Registra advertencias en la consola para que los desarrolladores puedan revisarlas y reemplazar las funcionalidades por las nuevas.
El plugin de migración de jQuery debe ser cargado inmediatamente después de jQuery, por ejemplo:
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>
Incluso podría ser usado si actualizamos a la versión 2.0.
Funcionalidades retiradas
Esta no es la lista completa de las funcionalidades retiradas, pero incluye a las que muy probablemente nos causen más problemas. Como siempre, probar es la mejor opción.
- jQuery.browser() - retirado
- .live() eventos - usar .on() en su lugar
- .die() - usar .off() en su lugar
- .andSelf() - usar .addBack() en su lugar
- .add() – Agrega un nodo al DOM de manera ordenada.
- .after(), .before(), .replaceWith() – Insertan contenido después, antes o en reemplazo del elemento.
- .appendTo, .insertBefore, .insertAfter, .replaceAll – Si ningún elemento puede ser seleccionado por el selector, el resultado será vacío. Los eventos de ajax deben estar adjuntos al documento, no a un nodo del DOM. Por ejemplo, $(document).ajaxStart(...); en lugar de $("#node").ajaxStart(...);
- radio/checkbox eventos de clic – Ahora devuelven el estado "seleccionado o no" en lugar del estado que debería tener si .preventDefault() no fue llamado
- Orden de los eventos focus – Los eventos blur del elemento anterior son disparados con mayor prioridad que los eventos focus de los nuevos elementos
- jQuery(htmlString) - htmlString sólo es considerado para crear un código HTML (en lugar de un selector) si empieza con el caracter '
- .attr() - deberías usar .prop()
- "hover" pseudo-evento - "hover" ya no es soportado como sinónimo para "mouseenter mouseleave"
- jQuery.ajax que devuelve un resultado JSON vacío – Esto ahora se considera un JSON mal formado y lanzará un error
Nuevas características
Además del retiro de las funcionalidades obsoletas y corrección de bugs, la v.1.9 de jQuery también nos trae nuevas características:
.css()
Ahora es posible pasar un array de propiedades CSS al método .css(). Te devolverá un objeto con su valor actual. Por ejemplo:
var dims = $("#box").css([ "width", "height", "backgroundColor" ]);
// { width: "10px", height: "20px", backgroundColor: "#D00DAD" }
Soporte de selector CSS3
El selector Sizzle soporta los siguientes selectores CSS3 en todos los navegadores: :nth-last-child, :nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root, and :lang.
.finish()
El método .finish() detiene todas las animaciones en cola y ubica al elemento(s) en su estado final. Esto se manejaba en anteriores versiones usando la combinación de .stop() y .clearQueue(); pero .finish() es mas sencillo de usar.
Source Map
Los mapas de fuente nos permite testear un sitio en producción que usa una versión minimizada de scripts o CSS. En esencia, el debugger del navegador mapea las líneas en el archivo comprimido con la fuente no comprimida para realizar una vista más rápida al código, definir puntos de ruptura, cambiar valores, etc.
Adios a los IEs obsoletos
Esta es una decisión que esta causando controversia, ya que muchos desarrolladores consideran que fue una decisión prematura; mientras que otros piensan que retirar el soporte a IE6, 7 y 8 es una bendición.
Si bien es cierto, el número de usuarios que utilizan IE6/7/8 y que visitan una web es relativamente bajo, según StatCounter no supera el 13%. Aún es un tráfico que debe de tenerse en cuenta antes de realizar la implementación de la nueva versión del framework.
¿Piensas actualizar a la versión 1.9 de jQuery?
Por todo lo dicho, antes de implementar jQuery 1.9 y/o la v.2 debes confirmar que no vas a causar molestias a tus visitantes. Yo prefiero esperar unas semanas más y estar al tanto de los issues que pueden presentarse y resolverse.
Asimismo, recuerda que el plugin de migración te ofrece una buena solución para tu proceso de actualización.
Descargar | jQuery 1.9
Fuentes:
- jQuery 1.9 Final, jQuery 2.0 beta, Migrate final released
- jQuery 1.9 What’s News