JQuery

jQuery
software
Logo
Logo
GenereLibreria di JavaScript
SviluppatoreJohn Resig
Data prima versionegennaio 2006
Ultima versione4.0.0 (17 gennaio 2026)
Sistema operativoMultipiattaforma
LinguaggioJavaScript
LicenzaGNU GPL, Licenza MIT
(licenza libera)
Sito webjquery.com
(inglese)
«write less, do more.»
(italiano)
«scrivi di meno, fai di più.»

jQuery è una libreria JavaScript per applicazioni web, distribuita come software libero, distribuito sotto i termini della Licenza MIT.. Nasce con l'obiettivo di semplificare la selezione, la manipolazione, la gestione degli eventi e l'animazione di elementi DOM in pagine HTML, nonché semplificare l'uso di funzionalità AJAX, la gestione degli eventi e la manipolazione dei CSS.

Le sue caratteristiche permettono agli sviluppatori JavaScript di astrarre le interazioni a basso livello con i contenuti delle pagine HTML. L'approccio di tipo modulare di jQuery consente la creazione semplificata di applicazioni web e contenuti dinamici versatili. Nel 2020, jQuery risulta la libreria JavaScript più utilizzata in Internet, ovvero è presente nel 74,4% dei primi 10 milioni di siti Internet più popolari secondo W3Techs.

Sviluppo

Pubblicato per la prima volta nel gennaio 2006 da John Resig, è un progetto tuttora attivo e in evoluzione, gestito da un gruppo di sviluppatori guidato da Dave Methvin.

La selezione degli oggetti DOM è basata sul motore chiamato Sizzle, un progetto Open Source derivato da jQuery.

API

Il framework fornisce metodi e funzioni per gestire al meglio aspetti grafici e strutturali come posizione di elementi, effetto di click su immagini, manipolazione del Document Object Model e altro ancora, mantenendo la compatibilità tra browser diversi e standardizzando gli oggetti messi a disposizione dall'interprete JavaScript del browser.

Core

Il core di jQuery fornisce:

Selettori

I selettori sono gli strumenti utilizzati per ottenere l'accesso agli elementi HTML della pagina, utilizzando la stessa sintassi dei selettori Cascading Style Sheet, ovvero:

Attributi

Gli attributi sono ottenuti o modificati in maniera diversa a seconda del browser; jQuery aiuta lo sviluppatore offrendo un'unica funzione di frontend valida sia come getter (ottenere un valore), sia come setter (impostare un valore), a seconda che sia specificato o no un parametro:

DOM Traversing

Per risalire a elementi padre, figli, per i nodi foglia o per elementi successivi, il framework propone numerosi metodi e funzioni per attraversare e scorrere il DOM del documento.

Manipolazione

La manipolazione del DOM è semplificata da numerosi metodi:

CSS

Per controllare lo stile degli elementi, in maniera semplificata e standardizzata. Sono forniti i metodi:

Eventi

Il framework riconosce gli oggetti di tipo event e provvede a modificare le loro proprietà rendendoli uniformi, semplificando la loro gestione, la loro propagazione, e fornendo un'utile modalità per impedire al browser di continuare l'esecuzione (ad esempio sulla onclick di un link). L'assegnazione di eventi quali click, load, mouseover è gestita in maniera efficace e non invadente.

Effetti bidimensionali

Esempio di slider JQuery
Esempio di slider JQuery

Gli effetti messi a disposizione dal framework, servono a manipolare la visibilità degli elementi selezionati. È possibile mostrarli o nasconderli con vari effetti, tra i quali:

È possibile definire facilmente effetti personalizzati specificando la proprietà CSS da manipolare (per esempio: altezza, bordo e altro), come è pure possibile specificare la durata dell'effetto e una funzione di callback da eseguire dopo l'animazione.

Effetti tridimensionali

Con JQuery si possono creare visite virtuali e alcuni effetti che simulano il web 3D.

Galleria JQuery con effetto 3D
Galleria JQuery con effetto 3D

AJAX

La gestione delle chiamate asincrone (AJAX) è davvero semplificata, e sono fornite le funzioni:

Anche gli eventi AJAX sono gestibili in modo semplificato, per il completamento dei form di immissione, la gestione degli errori e l'invio dei dati.

Utilità

La libreria fornisce scorciatoie per gestire vettori, per la manipolazione di stringhe e per il riconoscimento di browser e oggetti/funzioni.

Caratteristiche

L'oggetto principale, di nome jQuery, è genericamente utilizzato tramite il suo alias, il carattere $, per mantenere uniformità con la libreria Prototype.

// Tutti i link
var l1 = jQuery('a');
var l2 = $('a');

// l1 e l2 sono oggetti diversi
// ma il loro contenuto è identico

I selettori, in jQuery, utilizzano la sintassi dei selettori css; sono quindi concatenabili e molto precisi nel restituire gli elementi voluti.

// Ritorna tutte le immagini di classe class1 e/o class3
$('img.class1,img.class3');

Concatenazione del codice (chainability); quasi ogni metodo restituisce lo stesso oggetto jQuery dal quale è stata chiamato. Grazie a questo, il codice è molto più leggibile.

var links = $('a');

links.css( 'color', 'red' );
links.css( 'width', '150px' );
links.show( 1000 );
links.click( function () {
	alert( 'clicked!' );
} );

Può essere riscritta come segue

$("a").css( { color: 'red', width: '150px' } )
      .show( '1000' )
      .click( function () {
      	alert( 'clicked!' );
      } );

La libreria non collide con altri framework quali Prototype, MooTools, o YUI, e può essere pertanto utilizzata assieme ad esse.

jQuery vanta una discreta varietà di plugin che ne estendono le funzionalità. Fra i plugin ufficiali vi è JQuery UI (user interface per jQuery), nato per semplificare ed uniformare la gestione di un'interfaccia grafica composta da temi, widget, animazioni, transizioni, ecc.

Versioni

Versione Versione iniziale Ultimo aggiornamento Dimensioni ridotte (KB) Note aggiuntive
1.0 26 agosto 2006 Prima versione stabile
1.1 14 gennaio 2007
1.2 10 settembre 2007 1.2.6 54.5
1.3 14 gennaio 2009 1.3.2 55.9 Sizzle Selector Engine introdotto nel core
1.4 14 gennaio 2010 1.4.4 76.7
1.5 31 gennaio 2011 1.5.2 83.9 Gestione della richiamata differita, riscrittura del modulo ajax
1.6 3 maggio 2011 1.6.4 89.5 Significativi miglioramenti delle prestazioni per le funzioni attr () e val ()
1.7 3 novembre 2011 1.7.2 (21 marzo 2012) 92.6 Nuove API per eventi: .on () e .off (), mentre le vecchie API sono ancora supportate.
1.8 9 agosto 2012 1.8.3 (13 novembre 2012) 91.4 Sizzle Selector Engine riscritto, animazioni migliorate e flessibilità $ (html, props).
1.9 15 gennaio 2013 1.9.1 (4 febbraio 2013) 90.5 Rimozione di interfacce deprecate e pulizia del codice
1.10 24 maggio 2013 1.10.2 (3 luglio 2013) 90.9 Correzioni di bug incorporate e differenze segnalate dai cicli beta 1.9 e 2.0
1.11 24 gennaio 2014 1.11.3 (28 aprile 2015) 93.7
1.12 8 gennaio 2016 1.12.4 (20 maggio 2016) 94.9
2.0 18 aprile 2013 2.0.3 (3 luglio 2013) 81.7 Eliminato il supporto di IE 6–8 per i miglioramenti delle prestazioni e la riduzione delle dimensioni dei file
2.1 24 gennaio 2014 2.1.4 (28 aprile 2015) 82.4
2.2 8 gennaio 2016 2.2.4 (20 maggio 2016) 83.6
3.0 9 giugno 2016 3.0.0 (9 giugno 2016) 84.3 Promesse/A + supporto per Deferreds, $ .ajax e $ .when, .data () compatibile con HTML5
3.1 7 luglio 2016 3.1.1 (23 settembre 2016) 84.7 jQuery.readyException aggiunta, gli errori del gestore pronto ora non vengono silenziati
3.2 16 marzo 2017 3.2.1 (20 marzo 2017) 84.6 Aggiunto supporto per il recupero dei contenuti degli elementi<template>e deprecazione di alcuni vecchi metodi.
3.3 19 gennaio 2018 3.3.1 (20 gennaio 2018) 84.9 Deprecazione di vecchie funzioni, le funzioni che accettano le classi ora le supportano anche in formato array.
3.4 10 aprile 2019 3.4.1 (1 maggio 2019) 86.1 Miglioramenti delle prestazioni nonce e supporto nomodule, correzioni per elementi radio, una correzione minore per la sicurezza.
3.5 10 aprile 2020 3.5.1 (4 maggio 2020) 87.4 Correzioni di sicurezza .even()e .odd()metodi jQuery.trimdeprecati
3.6 2 marzo 2021 3.6.0 (2 marzo 2021) 90 Correzioni di bug e miglioramenti

Alternative

Lo stesso argomento in dettaglio: HTML5, CSS, JavaScript e jQuery UI.

Diversi articoli hanno fatto notare come, sebbene jQuery fosse una libreria indispensabile per svolgere determinati compiti con JavaScript, con le versioni più recenti di JavaScript e dei browser, le funzionalità di jQuery sono diventate funzionalità standard di JavaScript.

Nel corso degli anni è nato Vanilla JS, un finto framework JavaScript, il cui scopo è promuovere l'uso di JavaScript senza framework.

Con la nascita di HTML 5 e CSS 3 alcune possibilità come la creazione di gallerie d'immagini, effetti e menu a tendina sono fattibili senza l'utilizzo di JQuery e/o JQuery UI e/o Ajax, cosa che con HTML 4 e CSS 2 era spesso impossibile fare.

Esempi di uso JQuery

Note

  1. 1 2 (EN) License, su jQuery Foundation. URL consultato il 3 giugno 2015.
  2. ↑ Usage Statistics and Market Share of JavaScript Libraries for Websites, February 2020, su w3techs.com. URL consultato il 28 febbraio 2020.
  3. ↑ (EN) JS Foundation- js.foundation, The jQuery Team | jQuery Foundation, su jquery.org. URL consultato il 28 febbraio 2020.
  4. ↑ (EN) jQuery Foundation- jquery.org, jQuery 1.3 and the jQuery Foundation | Official jQuery Blog, su blog.jquery.com. URL consultato il 28 febbraio 2020.
  5. ↑ (EN) Carlos Delgado, Top 7: Best 360° (Equirectangular) Image Viewer JavaScript Plugins, su Our Code World, 15 gennaio 2019. URL consultato il 15 febbraio 2021.
  6. ↑ (EN) 16 Cool jQuery 3D Effect Plugins – Bashooka, su bashooka.com, 15 settembre 2012. URL consultato il 15 febbraio 2021 (archiviato dall'url originale il 25 gennaio 2021).
  7. ↑ (EN) Archivio di plugin per jQuery, su npmjs.com. URL consultato il 30 gennaio 2018.
  8. ↑ James Chesters, Long-awaited jQuery 3.0 Brings Slim Build, su infoq.com, 15 giugno 2016. URL consultato il 28 gennaio 2017.
  9. ↑ jQuery 3.2.0 Is Out!, in jQuery Blog, 16 marzo 2017. URL consultato il 12 marzo 2018.
  10. ↑ jQuery 3.3.0 – A fragrant bouquet of deprecations and…is that a new feature?, in jQuery Blog, 19 gennaio 2018. URL consultato il 15 aprile 2019.
  11. ↑ jQuery 3.3.1 – fixed dependencies in release tag, in jQuery Blog, 20 gennaio 2018. URL consultato il 15 aprile 2019.
  12. ↑ jQuery 3.4.0 Released, in jQuery Blog, 10 aprile 2018. URL consultato il 15 aprile 2019.
  13. ↑ jQuery 3.4.1: triggering focus events in IE and finding root elements in iOS 10, in jQuery Blog, jQuery Foundation.
  14. ↑ jQuery 3.5.0 Released!, in jQuery Blog, 10 aprile 2020. URL consultato l'11 aprile 2020.
  15. ↑ jQuery 3.5.1 Released: Fixing a Regression, in jQuery Blog, jQuery Foundation.
  16. ↑ (EN) jQuery Foundation- jquery.org, jQuery 3.6.0 Released! | Official jQuery Blog, su blog.jquery.com. URL consultato il 24 luglio 2022.
  17. ↑ (EN) (Now More Than Ever) You Might Not Need jQuery, su css-tricks.com, 12 luglio 2017. URL consultato il 30 gennaio 2018.
  18. ↑ (EN) Vanilla JS, su vanilla-js.com. URL consultato il 30 gennaio 2018.
    «The Vanilla JS team takes pride in the fact that it is the most lightweight framework available anywhere»
  19. ↑ (EN) 5 things you can do with CSS instead of JavaScript, su LogRocket Blog, 29 ottobre 2019. URL consultato il 9 febbraio 2021.
  20. ↑ (EN) 49 CSS Galleries, su Free Frontend. URL consultato il 9 febbraio 2021.
  21. ↑ LiveCode - HTML5 - Calculator App Demo, su livecode.com. URL consultato il 9 febbraio 2021.
  22. ↑ Andrea Pacchiarotti, Menù responsivo in HTML e CSS senza JavaScript e jQuery, su Andrea pacchiarotti. URL consultato il 9 febbraio 2021.

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàGND (DE) 7681087-2