jQuery es unabibliotecamultiplataforma deJavaScript, creada inicialmente porJohn Resig, que permite simplificar la manera de interactuar con los documentosHTML, manipular el árbolDOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnicaAJAX apáginas web.[1] Fue presentada el 14 de enero de 2006 en elBarCamp NYC. De acuerdo a un análisis de laWeb (realizado en 2017) JQuery es la biblioteca de JavaScript más utilizada, por un amplio margen.[2][3]
jQuery essoftware libre y de código abierto, posee un doble licenciamiento bajo laLicencia MIT y laLicencia Pública General de GNU v2, permitiendo su uso en proyectoslibres yprivados.[4] 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 elementosDOM, crearanimaciones, manejareventos y desarrollar aplicacionesAJAX. JQuery también proporciona capacidades para que los desarrolladores creencomplementos en la parte superior de la biblioteca de JavaScript. Esto permite a los desarrolladores crearabstracciones 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 poderosaspá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 deotros marcos de JavaScript comoYUI v3 yDojo, lo que más tarde estimuló la creación de lasAPI de selectores estándar.[5]
Las empresasMicrosoft yNokia anunciaron en 2008 que iban a incluir la biblioteca en sus plataformas.[6] Microsoft la añadiría en suIDEVisual Studio[7] y la usaría junto con losframeworksASP.NET AJAX yASP.NET MVC, mientras queNokia la integraría con su plataformaWeb Run-Time.[8]
jQuery, en su núcleo, es una biblioteca de manipulación deModelo 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 unaetiquetah1), 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ñadireventos manipuladores a laDOM utilizando JavaScript, en lugar de añadir eventosatributos HTML para llamar a funciones de JavaScript. Por lo tanto, alienta a los desarrolladores aseparar 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.
JQuery fue creado originalmente en enero de 2006 enBarCampNYC porJohn Resig, influenciado por la anterior bibliotecacssQuery deDean Edwards.[9][10] Actualmente lo mantiene un equipo de desarrolladores liderado porTimmy Willison (con el motor de selección de jQuery, Sizzle, liderado porRichard Gibson).[11]
JQuery fue originalmente licenciada bajo elCC BY-SA 2.5 , y se leotorgó lalicencia MIT en 2006.[12] A fines de 2006, teníadoble licencia bajo las licenciasGPL y MIT.[13] Como esto llevó a cierta confusión, en 2012 se eliminó la GPL y ahora solo está autorizada bajo la licencia MIT.[14]
En 2015, JQuery se utilizó en el 63% del millón de sitios web principales (segúnBuiltWith) y en el 17% de todos los sitios web deInternet.[15] 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únBuiltWith).[16]
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únBuiltWith), siendo la biblioteca de JavaScript más popular hasta el momento.[17][18]
jQuery incluye las siguientes características:
Soporte en navegadores web
[editar]jQuery 3.0+ admite las "versiones actuales-1" (es decir, la versión estable actual del navegador y la versión anterior) deFirefox (y ESR),Chrome,Safari yEdge, así comoInternet Explorer 9 y versiones más recientes. Endispositivos móviles, es compatible coniOS 7 y más reciente yAndroid 4.0 y más reciente.[21]
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 unared de entrega de contenido (conocido popularmente comoCDN) alojada por MaxCDN.[22] Google en el servicio Google Hosted Libraries y Microsoft también alojan la biblioteca.[23][24]
Ejemplo de vinculación de una copia de la biblioteca localmente (desde el mismo servidor que aloja la página web):
<script src="jquery.js"></script>
Ejemplo de vinculación de una copia de la biblioteca remotamente (a través del CDN propio de JQuery):
<script src="https://code.jquery.com/jquery-3.4.0.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
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$() ojQuery().
La forma de interactuar con la página es mediante la función$(), un alias dejQuery(), 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 denominadaselector en la terminología de jQuery.[25]
$("#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");Comúnmente antes de realizar cualquier acción en el documento conjQuery(), 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.});| Fecha de versión | Número de versión | Notas adicionales |
|---|
| 26 de agosto de 2006 | 1.0 | Primera versión estable |
| 31 de agosto de 2006 | 1.0.1 | |
| 9 de octubre de 2006 | 1.0.2 | |
| 27 de octubre de 2006 | 1.0.3 | |
| 12 de diciembre de 2006 | 1.0.4 | Último arreglo de la versión 1.0 |
| 14 de enero de 2007 | 1.1 | |
| 22 de enero de 2007 | 1.1.1 | |
| 27 de febrero de 2007 | 1.1.2 | |
| 1 de julio de 2007 | 1.1.3 | |
| 5 de julio de 2007 | 1.1.3.1 | |
| 24 de agosto de 2007 | 1.1.4 | Último arreglo de la versión 1.1 |
| 10 de septiembre de 2007 | 1.2 | |
| 16 de septiembre de 2007 | 1.2.1 | |
| 15 de enero de 2008 | 1.2.2 | |
| 8 de febrero de 2008 | 1.2.3 | |
| 19 de mayo de 2008 | 1.2.4 | |
| 21 de mayo de 2008 | 1.2.5 | Arreglo por mala construcción de 1.2.4 |
| 24 de mayo de 2008 | 1.2.6 | Último arreglo de la versión 1.2 |
| 14 de enero de 2009 | 1.3 | Se introduce el motor de selección de Sizzle en el núcleo |
| 21 de enero de 2009 | 1.3.1 | |
| 20 de febrero de 2009 | 1.3.2 | Último arreglo de la versión 1.3 |
| 14 de enero de 2010 | 1.4 | Crean una página web específica parajQuery 1.4 |
| 25 de enero de 2010 | 1.4.1 | |
| 19 de febrero de 2010 | 1.4.2 | |
| 16 de octubre de 2010 | 1.4.3 | |
| 11 de noviembre de 2010 | 1.4.4 | Último arreglo de la versión 1.4 |
| 31 de enero de 2011 | 1.5 | Reescritura del módulo AJAX |
| 24 de febrero de 2011 | 1.5.1 | |
| 31 de marzo de 2011 | 1.5.2 | Último arreglo de la versión 1.5 |
| 3 de mayo de 2011 | 1.6 | |
| 12 de mayo de 2011 | 1.6.1 | |
| 30 de junio de 2011 | 1.6.2 | |
| 1 de septiembre de 2011 | 1.6.3 | |
| 12 de septiembre de 2011 | 1.6.4 | |
| 3 de noviembre de 2011 | 1.7 | |
| 21 de noviembre de 2011 | 1.7.1 | |
| 21 de marzo de 2012 | 1.7.2 | |
| 9 de agosto de 2012 | 1.8 | |
| 30 de agosto de 2012 | 1.8.1 | |
| 20 de septiembre de 2012 | 1.8.2 | |
| 13 de noviembre de 2012 | 1.8.3 | |
| 1 de enero de 2013 | 1.9 | - Simplificación de laAPI
- Mejorado el soporte paraCSS3
- Soporte paraSource map[26]
- Solucionados varios bugs.
|
| 30 de mayo de 2013 | 1.10.1 | Soluciona bug grave de la versión 1.9 |
| 24 de enero de 2014 | 1.11 | - Velocidad de procesamiento aumentada
- Cambios a nivel de publicación de JQuery
- Modularidad definida porAMD
- Eliminados layouts forzados
|
| 20 de mayo de 2016 | 1.12 | - Cambios a nivel de publicación de jQuery
- Errores de la versión anterior corregidos.
|
| 18 de abril de 2013 | 2.0 | - Primer lanzamiento de las versiones 2.X
- Perdida de compatibilidad conInternet Explorer (6, 7 ,8)
- Reducción de tamaño en comparación con la versión 1.9.1
|
| 24 de enero de 2014 | 2.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 enNPM yBower
|
| 8 de enero de 2016 | 2.2 | - Última actualización de las versiones 2.X
- Mejora de rendimiento
- Gastos generales de arranque más bajos
- Nuevas características
|
| 9 de junio de 2016 | 3.0 | |
| 7 de julio de 2016 | 3.1.0 | - Segunda actualización de las versiones 3.X
- Correcciones debugs de la versión anterior
|
| 22 de septiembre de 2016 | 3.1.1 | - Correcciones debugs de la versión anterior
|
| 16 de marzo de 2017 | 3.2.0 | - Tercera actualización de las versiones 3.X
- Soportes para propiedadesCSS personalizadas
- Corrección en errores al ajustar tamaño vertical y horizontal
|
| 20 de marzo de 2017 | 3.2.1 | - Cambio en el núcleo
- Refuerzo para las dimensiones verticales y horizontales
- Cambios en los eventos
|
| 19 de enero de 2018 | 3.3.0 | - Cuarta actualización de las versiones 3.X
- Se eliminan varias funciones
- Se deja de utilizar PhantomJS para ejecutar pruebas
|
| 20 de enero de 2018 | 3.3.1 | - Cambio para adaptarse a la versión 5.X deNPM
|
| 10 de abril de 2019 | 3.4.0 | - Quinta actualización de las versiones 3.X
- Mejora de rendimiento en cambios de alto y ancho
- Cambio en el manejador de evento de los input de tipo radio
- Arreglo de vulnerabilidad
- Eliminación de los selectores de posición
|
| 10 de abril de 2020 | 3.5.0 | |
| 2 de marzo de 2021 | 3.6.0 | |
| 17 de enero de 2026 | 4.0.0 | - Eliminación del soporte para IE < 11
|
- ↑«jQuery: The write less, do more, JavaScript library». The jQuery Project. Consultado el 29 de abril de 2010.
- ↑«Usage of JavaScript libraries for websites».
- ↑«Libscore». Consultado el 15 de abril de 2019.
- ↑«Licencias de uso de jQuery».
- ↑"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 thefast adoption ofquerySelector/querySelectorAll into main Web browsers.
- ↑«Anuncio en el blog oficial de jQuery sobre la inclusión de la biblioteca en los productos de Microsoft y Nokia.». Consultado el 3 de abril de 2011.
- ↑«Entrada sobre el uso de jQuery en el blog de Scott Guthrie». Archivado desdeel original el 1 de febrero de 2009. Consultado el 3 de abril de 2011.
- ↑«Guarana UI: A jQuery Based UI Library for Nokia WRT».Forum Nokia. Archivado desdeel original el 23 de noviembre de 2009. Consultado el 30 de marzo de 2010.
- ↑York, Richard (2009).Beginning JavaScript and CSS Development with jQuery. Wiley. p. 28.ISBN 978-0-470-22779-4.
- ↑Resig, John (31 de octubre de 2007).«History of jQuery». Consultado el 15 de abril de 2019.
- ↑Willison, Timmy (4 de julio de 2012).«The New Sizzle». Consultado el 23 de abril de 2019.
- ↑jquery-under-the-mit-license on jquery.org (2006)
- ↑license on jquery.org (archived 2010)
- ↑jquery-licensing-changes on jquery.org (2012)
- ↑«Handling 15,000 requests per second: The Growth Behind jQuery».www.maxcdn.com(en inglés estadounidense).MaxCDN. 20 de junio de 2015. Archivado desdeel original el 2 de julio de 2018. Consultado el 2 de julio de 2018.
- ↑«jQuery Usage Statistics».trends.builtwith.com(en inglés). Archivado desdeel original el 25 de diciembre de 2018. Consultado el 2 de julio de 2018.
- ↑«jQuery Usage Statistics».trends.builtwith.com(en inglés). Archivado desdeel original el 25 de diciembre de 2018. Consultado el 23 de abril de 2018.
- ↑«JavaScript Library Usage Distribution on the Entire Internet».trends.builtwith.com(en inglés). Consultado el 23 de abril de 2018.
- ↑Resig, John (14 de enero de 2009).«jQuery 1.3 and the jQuery Foundation».jQuery Blog. Consultado el 4 de mayo de 2009.
- ↑«Compatibilidad con los navegadores web».
- ↑Browser Support | jQuery
- ↑jquery.org, jQuery Foundation -.«jQuery CDN».
- ↑«Google Libraries API - Developer's Guide». code.google.com. Consultado el 11 de marzo de 2012.
- ↑«Microsoft Ajax Content Delivery Network».ASP.net. Microsoft Corporation. Consultado el 15 de abril de 2019.
- ↑«Selectors, en jQuery.com».
- ↑«Introduction to JavaScript Source Maps».