jQuery es una biblioteca multiplataforma de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web. Fue presentada el 14 de enero de 2006 en el BarCamp NYC. De acuerdo a un análisis de la Web (realizado en 2017) JQuery es la biblioteca de JavaScript más utilizada, por un amplio margen.
jQuery es software libre y de código abierto, posee un doble licenciamiento bajo la Licencia MIT y la Licencia Pública General de GNU v2, permitiendo su uso en proyectos libres y privados. jQuery, al igual que otras bibliotecas, ofrece una serie de funcionalidades basadas en JavaScript que de otra manera requerirían de mucho más código, es decir, con las funciones propias de esta biblioteca se logran grandes resultados en menos tiempo y espacio.
La sintaxis de JQuery está diseñada para facilitar la navegación por un documento, seleccionar elementos DOM, crear animaciones, manejar eventos y desarrollar aplicaciones AJAX. JQuery también proporciona capacidades para que los desarrolladores creen complementos en la parte superior de la biblioteca de JavaScript. Esto permite a los desarrolladores crear abstracciones para interacción y animación de bajo nivel, efectos avanzados y widgets temáticos de alto nivel. El enfoque modular de la biblioteca jQuery permite la creación de poderosas páginas web dinámicas y aplicaciones web.
El conjunto de características principales de jQuery (selecciones de elementos DOM, recorrido y manipulación) habilitados por su motor de selección (denominado "Sizzle" de v1.3), crearon un nuevo "estilo de programación", algoritmos de fusión y estructuras de datos DOM. Este estilo influyó en la arquitectura de otros marcos de JavaScript como YUI v3 y Dojo, lo que más tarde estimuló la creación de las API de selectores estándar."Selectors API Level 1, W3C Recommendation" (21 February 2013). This standard turned what was jQuery "helper methods" into JavaScript-native ones, and the wide use of jQuery stimulated the fast adoption of querySelector/querySelectorAll into main Web browsers.
Las empresas Microsoft y Nokia anunciaron en 2008 que iban a incluir la biblioteca en sus plataformas. Microsoft la añadiría en su IDE Visual Studio y la usaría junto con los frameworks ASP.NET AJAX y ASP.NET MVC, mientras que Nokia la integraría con su plataforma Web Run-Time.
Visión general jQuery, en su núcleo, es una biblioteca de manipulación de Modelo de Objetos del Documento (DOM). El DOM es una representación en estructura de árbol de todos los elementos de una página web. JQuery simplifica la sintaxis para buscar, seleccionar y manipular estos elementos DOM. Por ejemplo, JQuery se puede usar para encontrar un elemento en el documento con una determinada propiedad (por ejemplo, todos los elementos con una etiqueta h1), cambiar uno o más de sus atributos (por ejemplo, color, visibilidad) o hacer que responda a un evento (por ejemplo, un clic del ratón).
jQuery también proporciona un paradigma para el manejo de eventos que va más allá de la selección y manipulación básicas de elementos DOM. La asignación de eventos y la definición de la función de devolución de llamada de eventos se realizan en un solo paso en una única ubicación en el código. JQuery también pretende incorporar otra funcionalidad de JavaScript muy utilizada (por ejemplo, entradas y salidas de fundido cuando se ocultan elementos, animaciones mediante la manipulación de las propiedades de CSS).
Los principios de desarrollo con JQuery son:
La separación de JavaScript y HTML: La biblioteca jQuery proporciona la sintaxis simple para añadir eventos manipuladores a la DOM utilizando JavaScript, en lugar de añadir eventos atributos HTML para llamar a funciones de JavaScript. Por lo tanto, alienta a los desarrolladores a separar completamente el código JavaScript del marcado HTML. Brevedad y claridad: JQuery promueve la brevedad y la claridad con funciones como funciones "chainable" y nombres de funciones abreviados. Eliminación de incompatibilidades entre navegadores: Los motores de JavaScript de diferentes navegadores difieren ligeramente, por lo que el código JavaScript que funciona para un navegador puede no funcionar para otro. Al igual que otros kits de herramientas de JavaScript, jQuery maneja todas estas inconsistencias en varios navegadores y proporciona una interfaz consistente que funciona en diferentes navegadores. Extensibilidad: Los nuevos eventos, elementos y métodos pueden agregarse fácilmente y luego reutilizarse como un complemento.
Historia JQuery fue creado originalmente en enero de 2006 en BarCamp NYC por John Resig, influenciado por la anterior biblioteca cssQuery de Dean Edwards. Actualmente lo mantiene un equipo de desarrolladores liderado por Timmy Willison (con el motor de selección de jQuery, Sizzle, liderado por Richard Gibson).
JQuery fue originalmente licenciada bajo el CC BY-SA 2.5 , y se le otorgó la licencia MIT en 2006.jquery-under-the-mit-license on jquery.org (2006) A fines de 2006, tenía doble licencia bajo las licencias GPL y MIT.license on jquery.org (archived 2010) Como esto llevó a cierta confusión, en 2012 se eliminó la GPL y ahora solo está autorizada bajo la licencia MIT.jquery-licensing-changes on jquery.org (2012)
En 2015, JQuery se utilizó en el 63% del millón de sitios web principales (según BuiltWith) y en el 17% de todos los sitios web de Internet. A partir de junio de 2018, JQuery se usa en el 73% del millón de sitios web más importantes y en el 22,4% de todos los sitios web (según BuiltWith).
Desde el año 2019, JQuery se usa en el 79,47% del millón de sitios web más importantes y en el 86% de todos los sitios web (según BuiltWith), siendo la biblioteca de JavaScript más popular hasta el momento.
Características jQuery incluye las siguientes características:
Selección de elementos DOM utilizando el motor de selección de código abierto de múltiples navegadores Sizzle , un spin-off del proyecto jQuery. Interactividad y modificaciones del árbol DOM, incluyendo soporte para CSS 1-3 y un plugin básico de XPath. Eventos. Manipulación de la hoja de estilos CSS. Efectos y animaciones. Animaciones personalizadas. AJAX. Objetos diferidos y de promesa para controlar el procesamiento asíncrono Soporta extensiones (JSON). Utilidades varias como obtener información del navegador, operar con objetos y vectores, funciones para rutinas comunes, etc. Métodos de compatibilidad que están disponibles de forma nativa con los navegadores Mozilla Firefox 2.0+, Internet Explorer 6+, Safari 3+, Opera 10.6+ y Google Chrome 8+. Soporte para múltiples navegadores web.
Soporte en navegadores web jQuery 3.0+ admite las "versiones actuales-1" (es decir, la versión estable actual del navegador y la versión anterior) de Firefox (y ESR), Chrome, Safari y Edge, así como Internet Explorer 9 y versiones más recientes. En dispositivos móviles, es compatible con iOS 7 y más reciente y Android 4.0 y más reciente.Browser Support | jQuery
Distribución La biblioteca JQuery normalmente se distribuye como un único archivo JavaScript que define todas sus interfaces, incluidas las funciones DOM, Eventos y Ajax. Se puede incluir dentro de una página web al vincularlo a una copia local, o al vincularlo a una de las muchas copias disponibles en los servidores públicos. JQuery tiene una red de entrega de contenido (conocido popularmente como CDN) alojada por MaxCDN. Google en el servicio Google Hosted Libraries y Microsoft también alojan la biblioteca.
Ejemplo de vinculación de una copia de la biblioteca localmente (desde el mismo servidor que aloja la página web):
Ejemplo de vinculación de una copia de la biblioteca remotamente (a través del CDN propio de JQuery):
Uso
jQuery consiste en un único fichero JavaScript que contiene las funcionalidades comunes de DOM, eventos, efectos y AJAX.
La característica principal de la biblioteca es que permite cambiar el contenido de una página web sin necesidad de recargarla, mediante la manipulación del árbol DOM y peticiones AJAX. Para ello utiliza las funciones $() o jQuery().
Función $()
La forma de interactuar con la página es mediante la función $(), un alias de jQuery(), que recibe como parámetro una expresión CSS o el nombre de una etiqueta HTML y devuelve todos los nodos (elementos) que concuerden con la expresión. Esta expresión es denominada selector en la terminología de jQuery.
$("#tablaAlumnos"); // Devolverá el elemento con id="tablaAlumnos" $(".activo"); // Devolverá una matriz de elementos con class="activo"
Una vez obtenidos los nodos, se les puede aplicar cualquiera de las funciones que facilita la biblioteca.
// Se elimina el estilo (con removeClass()) y se aplica uno nuevo (con addClass()) a todos los nodos con class="activo" $(".activo").removeClass("activo").addClass("inactivo");
O por ejemplo, efectos gráficos:
// Anima todos los componentes con class="activo" $(".activo").slideToggle("slow");
Inicio de jQuery
Comúnmente antes de realizar cualquier acción en el documento con jQuery(), debemos percatarnos de que el documento esté listo. Para ello usamos $(document).ready();, de esta forma: $(document).ready(function() { //Aquí van todas las acciones del documento. });
Versiones Fecha de versiónNúmero de versiónNotas adicionales26 de agosto de 20061.0Primera versión estable31 de agosto de 20061.0.19 de octubre de 20061.0.227 de octubre de 20061.0.312 de diciembre de 20061.0.4Último arreglo de la versión 1.014 de enero de 20071.122 de enero de 20071.1.127 de febrero de 20071.1.21 de julio de 20071.1.35 de julio de 20071.1.3.124 de agosto de 20071.1.4Último arreglo de la versión 1.110 de septiembre de 20071.216 de septiembre de 20071.2.115 de enero de 20081.2.28 de febrero de 20081.2.319 de mayo de 20081.2.421 de mayo de 20081.2.5Arreglo por mala construcción de 1.2.424 de mayo de 20081.2.6Último arreglo de la versión 1.214 de enero de 20091.3Se introduce el motor de selección de Sizzle en el núcleo21 de enero de 20091.3.120 de febrero de 20091.3.2Último arreglo de la versión 1.314 de enero de 20101.4Crean una página web específica para jQuery 1.425 de enero de 20101.4.119 de febrero de 20101.4.216 de octubre de 20101.4.311 de noviembre de 20101.4.4Último arreglo de la versión 1.431 de enero de 20111.5Reescritura del módulo AJAX24 de febrero de 20111.5.131 de marzo de 20111.5.2Último arreglo de la versión 1.53 de mayo de 20111.612 de mayo de 2011 1.6.130 de junio de 2011 1.6.21 de septiembre de 2011 1.6.312 de septiembre de 2011 1.6.43 de noviembre de 2011 1.7 Añadidas las funciones .on() y .off() Mejor soporte de HTML5 para IE6/7/8 Soporte para AMD (Asynchronous Module Definition)21 de noviembre de 2011 1.7.121 de marzo de 2012 1.7.29 de agosto de 2012 1.830 de agosto de 2012 1.8.120 de septiembre de 2012 1.8.213 de noviembre de 2012 1.8.31 de enero de 20131.9 Simplificación de la API Mejorado el soporte para CSS3 Soporte para Source map Solucionados varios bugs.30 de mayo de 20131.10.1Soluciona bug grave de la versión 1.924 de enero de 20141.11 Velocidad de procesamiento aumentada Cambios a nivel de publicación de JQuery Modularidad definida por AMD Eliminados layouts forzados20 de mayo de 20161.12 Cambios a nivel de publicación de jQuery Errores de la versión anterior corregidos.18 de abril de 20132.0 Primer lanzamiento de las versiones 2.X Perdida de compatibilidad con Internet Explorer (6, 7 ,8) Reducción de tamaño en comparación con la versión 1.9.124 de enero de 20142.1 Primera actualización de las versiones 2.X Menos diseños forzados Gastos generales de arranque más bajos Primera vez que se publica en NPM y Bower8 de enero de 20162.2 Última actualización de las versiones 2.X Mejora de rendimiento Gastos generales de arranque más bajos