# JQuery

jQuery és una biblioteca o framework de Javascript, creada inicialment per John Resig, que permet simplificar la manera d'interaccionar amb els documents HTML, manipular l'arbre DOM, gestionar esdeveniments, desenvolupar animacions i afegir interacció amb la tecnologia AJAX en pàgines web. Es va presentar el gener del 2006 a BarCamp NYC.D'acord amb una anàlisi de la Web (realitzat l'any 2017) JQuery és la biblioteca de JavaScript més utilitzada, per un ampli marge.
jQuery ofereix una sèrie de funcionalitats basades en Javascript que d'una altra manera requerien molt més codi, és a dir, amb les funcions d'aquesta biblioteca s'aconsegueixen bons resultats en menys temps i espai.
La sintaxi de JQuery està dissenyada per facilitar la navegació per un document, seleccionar elements DOM, crear animacions, manejar esdeveniments i desenvolupar aplicacions AJAX. JQuery també proporciona capacitats perquè els desenvolupadors creuen complements a la part superior de la biblioteca de JavaScript. Això permet als desenvolupadors crear abstraccions per interacció i animació de baix nivell, efectes avançats i ginys temàtics d'alt nivell. L'enfocament modular de la biblioteca jQuery permet la creació de poderoses pàgines web dinàmiques i aplicacions web.
El conjunt de característiques principals de jQuery (seleccions d'elements DOM, recorregut i manipulació) habilitats pel seu motor de selecció (denominat "Sizzla" de v1.3), van crear un nou "estil de programació", algoritmes de fusió i estructures de dades DOM. Aquest estil va influir en l'arquitectura d'altres marcs de JavaScript com Yahoo! UI Library i Dojo, el que més tard va estimular la creació de les API de selectors estàndard.
Les empreses Microsoft i Nokia van anunciar que incloïen la biblioteca a les seves plataformes. Microsoft l'afegeix al seu IDE Visual Studio i l'utilitzarà juntament amb el framework ASP.NET AJAX i ASP.NET MVC, mentre que Nokia els integrarà a la seva plataforma Web Run-Time.
Microsoft l'afegirà en el seu IDE Visual Studio i la farà servir juntament amb els frameworks ASP.NET AJAX i ASP.NET MVC, mentre que Nokia els integrarà amb la seva plataforma web Run-Time.

## Visió general

jQuery, en el seu nucli, és una biblioteca de manipulació de Model d'Objectes del Document (DOM). El DOM és una representació en estructura d'arbre de tots els elements d'una pàgina web. JQuery simplifica la sintaxi per buscar, seleccionar i manipular aquests elements DOM. Per exemple, JQuery es pot usar per trobar un element en el document amb una determinada propietat (per exemple, tots els elements amb una etiqueta h1), canviar un o més dels seus atributs (per exemple, color, visibilitat) o fer que respongui a un esdeveniment (per exemple, un clic del ratolí).
jQuery també proporciona un paradigma per al maneig d'esdeveniments que va més enllà de la selecció i manipulació bàsiques d'elements DOM. L'assignació d'esdeveniments i la definició de la funció de devolució de trucada d'esdeveniments es realitzen en un sol pas en una única ubicació en el codi. JQuery també pretén incorporar una altra funcionalitat de JavaScript molt utilitzada (per exemple, entrades i sortides de fos quan s'oculten elements, animacions mitjançant la manipulació de les propietats de CSS).
Els principis de desenvolupament amb JQuery són:
* La separació de JavaScript i HTML: La biblioteca jQuery proporciona la sintaxi simple per afegir esdeveniments manipuladors a la DOM utilitzant JavaScript, en lloc d'afegir esdeveniments atributs HTML per cridar a funcions de JavaScript. Per tant, encoratja als desenvolupadors a separar completament el codi JavaScript del marcat HTML.
* Brevetat i claredat: JQuery promou la brevetat i la claredat amb funcions com a funcions "cadenades" i noms de funcions abreujats.
* Eliminació d'incompatibilitats entre navegadors: Els motors de JavaScript de diferents navegadors difereixen lleugerament, de manera que el codi JavaScript que funciona per a un navegador pot no funcionar per a un altre. Igual que altres kits d'eines de JavaScript, jQuery fa servir totes aquestes inconsistències en diversos navegadors i proporciona una interfície consistent que funciona en diferents navegadors.
* Extensibilitat: Els nous esdeveniments, elements i mètodes poden agregar fàcilment i després reutilitzar com un complement.

## Història

JQuery va ser creat originalment el gener del 2006 a BarCamp NYC per John Resig, influenciat per l'anterior biblioteca cssQuery de Dean Edwards. Actualment el manté un equip de desenvolupadors liderat per Timmy Willison (amb el motor de selecció de jQuery, Sizzla, liderat per Richard Gibson).
JQuery va ser originalment llicenciada sota el CC BY-SA 2.5, i se li va atorgar la Llicència X11 (MIT) l'any 2006. A finals de 2006, tenia doble llicència sota les llicències GPL i MIT. Com que això va portar a certa confusió, el 2012 es va eliminar la GPL i ara només està autoritzada sota la llicència MIT.
El 2015, JQuery es va utilitzar en el 63% del milió de llocs web principals (segons BuiltWith) i en el 17% de tots els llocs web de Internet. a partir d'juny de 2018, JQuery s'usa en el 73% del milió de llocs web més importants i en el 22,4% de tots els llocs web (segons BuiltWith).
Des de l'any 2019, JQuery s'usa en el 79,47% del milió de llocs web més importants i en el 86% de tots els llocs web (segons BuiltWith), sent la biblioteca de JavaScript més popular fins al moment.

## Característiques

JQuery inclou les següents característiques:
* Selecció d'elements DOM utilitzant el motor de selecció de codi obert de múltiples navegadors Sizzla, un spin-off del projecte jQuery.
* Interactivitat i modificacions de l'arbre DOM, incloent suport per a CSS 1-3 i un connector bàsic de XPath.
* Esdeveniments.
* Manipulació del full d'estils CSS.
* Efectes i animacions.
* Animacions personalitzades.
* AJAX.
* Objectes diferits i de promesa per controlar el processament asíncron
* Suporta extensions (JSON).
* Utilitats diverses com obtenir informació del navegador, operar amb objectes i vectors, funcions per rutines comuns, etc.
* Mètodes de compatibilitat que estan disponibles de forma nativa amb els navegadors Mozilla Firefox 2.0+, Internet Explorer 6+, Safari 3+, Opera 10.6+ i Google Chrome 8 +.
* Suport per múltiples navegadors

## Versions

| Data de versió | Número de versió | Notes addicionals |
| 26 d'agost de 2006 | 1.0 | Primera versió estable |
| 31 d'agost de 2006 | 1.0.1 | |
| 9 d'octubre de 2006 | 1.0.2 | |
| 27 d'octubre de 2006 | 1.0.3 | |
| 12 de desembre de 2006 | 1.0.4 | Últim arranjament de la versió 1.0 |
| 14 de gener de 2007 | 1.1 | |
| 22 de gener de 2007 | 1.1.1 | |
| 27 de febrer de 2007 | 1.1.2 | |
| 1 de juliol de 2007 | 1.1.3 | |
| 5 de juliol de 2007 | 1.1.3.1 | |
| 24 d'agost de 2007 | 1.1.4 | Últim arranjament de la versió 1.1 |
| 10 de setembre de 2007 | 1.2 | |
| 16 de setembre de 2007 | 1.2.1 | |
| 15 de gener de 2008 | 1.2.2 | |
| 8 de febrer de 2008 | 1.2.3 | |
| 19 de maig de 2008 | 1.2.4 | |
| 21 de maig de 2008 | 1.2.5 | Arreglo por mala construcción de 1.2.4 |
| 24 de maig de 2008 | 1.2.6 | Últim arranjament de la versió 1.2 |
| 14 de gener de 2009 | 1.3 | S'introdueix el motor de selecció de Sizzle en el nucli |
| 21 de gener de 2009 | 1.3.1 | |
| 20 de febrer de 2009 | 1.3.2 | Últim arranjament de la versió 1.3 |
| 14 de gener de 2010 | 1.4 | Creen una pàgina web específica per jQuery 1.4 |
| 25 de gener de 2010 | 1.4.1 | |
| 19 de febrer de 2010 | 1.4.2 | |
| 16 d'octubre de 2010 | 1.4.3 | |
| 11 de novembre de 2010 | 1.4.4 | Últim arranjament de la versió 1.4 |
| 31 de gener de 2011 | 1.5 | Re-escriptura del modul AJAX |
| 24 de febrer de 2011 | 1.5.1 | |
| 31 de març de 2011 | 1.5.2 | Últim arranjament de la versió 1.5 |
| 3 de maig de 2011 | 1.6 | |
| 12 de maig de 2011 | 1.6.1 | |
| 30 de juny de 2011 | 1.6.2 | |
| 1 de setembre de 2011 | 1.6.3 | |
| 12 de setembre de 2011 | 1.6.4 | |
| 3 de novembre de 2011 | 1.7 | Afegides les funcions .on i .off Millor suport de HTML5 per IE6/7/8 Suport per AMD (Asynchronous Module Definition) |
| 21 de novembre de 2011 | 1.7.1 | |
| 21 de març de 2012 | 1.7.2 | |
| 9 d'agost de 2012 | 1.8 | |
| 30 d'agost de 2012 | 1.8.1 | |
| 20 de setembre de 2012 | 1.8.2 | |
| 13 de novembre de 2012 | 1.8.3 | |
| 1 de gener de 2013 | 1.9 | Simplificació de la API Millora del suport per CSS3 Suport per Source map Solucionats varis bugs. |
| 30 de maig de 2013 | 1.10.1 | Solucionat bug greu de la versió 1.9 |
| 24 de gener de 2014 | 1.11 | Velocitat de processament augmentada Canvis a nivell de publicació de JQuery Modularitat definida per AMD Eliminats layouts forçats |
| 20 de maig de 2016 | 1.12 | Canvis a nivell de publicació de JQuery Errors de la versió anterior corregits. |
| 18 d'abril de 2013 | 2.0 | Primer llançament de les versions 2.X Pèrdua de compatibilitat amb Internet Explorer (6, 7 ,8) Reducció de mida en comparació amb la versió 1.9.1 |
| 24 de gener de 2014 | 2.1 | Primera actualització de les versions 2.X Menys dissenys forçats Cost general d'arrancada més baixos Primera vegada que es publica en NPM i Bower |
| 8 de gener de 2016 | 2.2 | Última actualització de les versions 2.X Millora de rendiment Cost general d'arrancada més baixos Noves característiques |
| 9 de juny de 2016 | 3.0 | Primera actualització de las versions 3.X Compatibilitat amb Jquery UI i Jquery Mobile |
| 7 de juliol de 2016 | 3.1.0 | Segona actualització de les versions 3.X Correccions de bugs de la versió anterior |
| 22 de setembre de 2016 | 3.1.1 | Correccions de bugs de la versió anterior |
| 16 de març de 2017 | 3.2.0 | Tercera actualització de les versions 3.X Suports per propietats CSS personalitzades Correcció en errors al ajustar la mida vertical i horitzontal |
| 20 de març de 2017 | 3.2.1 | Canvi en el nucli Reforç per les dimensions verticals i horitzontals Canvis en els esdeveniments |
| 19 de gener de 2018 | 3.3.0 | Quarta actualització de les versions 3.X S'eliminen varies funcions Es deixa d'utilitzar PhantomJS per executar proves |
| 20 de gener de 2018 | 3.3.1 | Canvi per adaptar-se a la versió 5.X de NPM |
| 10 d'abril de 2019 | 3.4.0 | Cinquena actualització de les versions 3.X Millora de rendiment en canvis de alt i ample Canvi en el maneig dels input de tipus radi Arranjament de vulnerabilitats Eliminació dels selectors de posició |

## Referències

* ↑ «jQuery:The write less, do more, JavaScript library». The jQuery Project. [Consulta: 29 abril 2010].
* ↑ «Usage of JavaScript libraries for websites».
* ↑ «Libscore». [Consulta: 15 abril 2019].
* ↑ "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.
* ↑ «Anunci al bloc oficial de jQuery sobre la inclusió de la biblioteca en els productes de Microsoft i Nokia. ». [Consulta: 3 abril 2011].
* ↑ «Entrada sobre l'ús de jQuery al blog de Scott Guthrie ». [Consulta: 3 abril 2011].
* ↑ «Guaranà UI: A jQuery Based UI Library for Nokia WRT». Forum Nokia. Arxivat de l'original el 2009-11-23. [Consulta: 20 juny 2019].
* ↑ York, Richard. [// books.google.cat/books?id=L9otyT4crSQC&pg=PA515 Beginning JavaScript and CSS Development with jQuery]. Wiley, 2009, p. 28. ISBN 978-0-470-22779-4.
* ↑ Resig, John. «History of jQuery», 31-10-2007. [Consulta: 15 abril 2019].
* ↑ Willison, Timmy. «The New Sizzla», 04-07-2012. [Consulta: = 2019.04.23].
* ↑ on jquery.org (2006)
* ↑ license on jquery.org (archived 2010)
* ↑ on jquery.org (2012)
* ↑ «Handling 15,000 requests per second: The Growth Behind jQuery» (en anglès). MaxCDN, 20-06-2015. Arxivat de l'original el 2 de juliol 2018.
* ↑ «jQuery Usage Statistics» (en anglès). Arxivat de l'original el 25 de desembre 2018.
* ↑ «jQuery Usage Statistics» (en anglès). Arxivat de l'[https: //trends.builtwith.com/javascript/jQuery original] el 25 de desembre 2018.
* ↑ «JavaScript Library Usage Distribution on the Entire Internet» (en anglès).
* ↑ Resig, John. «jQuery 1.3 and the jQuery Foundation». jQuery Bloc, 14-01-2009. [Consulta: 4 maig 2009].
* ↑ «Compatibilitat amb els navegadors web».
* ↑ «Introduction to JavaScript Source Maps».

## Enllaços externs

* Lloc oficial de Jquery (anglès)
* API de jQuery
* Exemple de sistema ABM utilitzant jQuery