Il rapporto fra jQuery e JavaScript è piuttosto complesso, non solo da un punto di vista tecnologico ma anche, per così dire, dal punto di vista della comunità di sviluppatori. Anche se tutti gli addetti ai lavori sanno quanto tempo e quante energie faccia risparmiare una libreria come jQuery, alcuni famosi programmatori ed insegnanti sottolineano l'esigenza di conoscere a fondo il linguaggio di base prima di scegliere una libreria di sviluppo. Il rischio è anche quello di abusare degli strumenti che abbiamo a disposizione e non saperci orientare senza un aiuto esterno.
Puà quindi essere istruttivo fare un confronto fra alcuni noti metodi di jQuery e il loro corrispettivo in JavaScript nativo.
Se ne è occupato in questi giorni Jeffrey Way, l'editor di Nettus+, proponendo una tavola di conversione. Quello che colpisce maggiormente, specie nell'articolo nel quale Way spiega i dettagli di questa "traduzione", sono due fattori, spesso sottovalutati.
Il primo è che una libreria come jQuery non serve solo a rendere più intuitivo il traversing o la creazione di animazioni, ma anche (e soprattutto, per certi versi), a scavalcare le ancora corpose differenze fra un browser e un altro, consentendoci di non creare funzioni piuttosto complesse per tenere conto delle diverse API, ad esempio per gli eventi (addEventListener contro il vecchio attachEvent di Internet Explorer) e per tutte le operazioni AJAX.
In secondo luogo, il confronto è meno sfavorevole per JavaScript se abbiamo a disposizione le nuove Selectors API (non compatibili con Internet Explorer 7 e precedenti), tanto da rendere la versione nativa davvero competitiva con quella di jQuery. Metodi come querySelector e classList sembrano quasi presi da una libreria moderna. Allo sviluppatore la scelta, tenendo comunque presente che jQuery garantisce una completa compatibilità (a prezzo di un overhead, ovviamente), e che creare oggetti jQuery consente di avere a disposizione un arsenale di metodi (comprese le famose animazioni) che diversamente dovremmo programmarci a partire da zero.