Mentre esistono alcune variazioni concettuali (ad esempio funzioni come $ .ajax
) nell'API jQuery, il concetto centrale di jQuery è "trova qualcosa, fai qualcosa". Più specificamente, seleziona gli elementi DOM da un documento HTML e poi fai qualcosa con loro usando i metodi jQuery. Questo è il concetto di grande immagine.
Per guidare questo concetto a casa, rifletti sul codice qui sotto.
Si noti che in questo documento HTML stiamo usando jQuery per selezionare un elemento DOM (). Con qualcosa selezionato, facciamo qualcosa con la selezione invocando i metodi jQuery
testo()
, attr ()
, e appendTo ()
.
Il testo
metodo chiamato sul pacchetto elemento e imposta il testo di visualizzazione dell'elemento da "jQuery". Il
attr
chiamata imposta il href
attributo al sito Web jQuery.
Groking il concetto di "trovare qualcosa, fare qualcosa" è fondamentale per avanzare come sviluppatore di jQuery.
Mentre selezionare qualcosa e fare qualcosa è il concetto alla base di jQuery, mi piacerebbe estendere questo concetto includendo anche la creazione di qualcosa. Pertanto, il concetto alla base di jQuery potrebbe essere esteso per includere prima la creazione di qualcosa di nuovo, selezionarlo e quindi fare qualcosa con esso. Potremmo chiamare questo concetto, dietro il concetto, dietro jQuery.
Quello che sto cercando di rendere ovvio è che non sei bloccato solo selezionando qualcosa che è già nel DOM. È inoltre importante aggiungere che jQuery può essere utilizzato per creare nuovi elementi DOM e quindi fare qualcosa con questi elementi.
Nell'esempio di codice seguente, creiamo un nuovo elemento che non è nel DOM. Una volta creato, viene selezionato e quindi manipolato.
Il concetto chiave da raccogliere qui è che stiamo creando il elemento al volo e quindi operare su di esso come se fosse già nel DOM.
Esistono problemi noti con i metodi jQuery che non funzionano correttamente quando un browser esegue il rendering di una pagina HTML in modalità quirk. Assicurati che quando usi jQuery il browser interpreti l'HTML in modalità standard o quasi standard usando un doctype valido.
Per garantire la corretta funzionalità, gli esempi di codice in questo libro utilizzano il doctype HTML 5.
jQuery attiva un evento personalizzato denominato pronto
quando il DOM è caricato e disponibile per la manipolazione. Il codice che manipola il DOM può essere eseguito in un gestore per questo evento. Questo è un modello comune visto con l'uso di jQuery.
Il seguente esempio presenta tre esempi codificati di questo evento personalizzato in uso.
Tieni presente che puoi associarne altrettanti pronto()
eventi sul documento come desideri. Non sei limitato a uno solo. Sono eseguiti nell'ordine in cui sono stati aggiunti.
In genere, non vogliamo aspettare il window.onload
evento. Questo è il punto di usare un evento personalizzato come pronto()
che eseguirà il codice prima che la finestra venga caricata, ma dopo che il DOM è pronto per essere attraversato e manipolato.
Tuttavia, a volte in realtà vogliamo aspettare. Mentre l'abitudine pronto()
l'evento è ottimo per eseguire codice una volta che il DOM è disponibile, possiamo anche usare jQuery per eseguire il codice una volta che l'intera pagina Web (incluse tutte le risorse) è completamente caricata.
Questo può essere fatto allegando un gestore di eventi di caricamento a finestra
oggetto. jQuery fornisce il caricare()
metodo di evento che può essere utilizzato per richiamare una funzione una volta che la finestra è stata caricata completamente. Di seguito, fornisco un esempio di caricare()
metodo di evento in uso.
A partire da jQuery 1.3, la libreria non garantisce più che tutti i file CSS vengano caricati prima che venga attivata l'abitudine pronto()
evento. A causa di questo cambiamento in jQuery 1.3, dovresti sempre includere tutti i file CSS prima di qualsiasi codice jQuery. Ciò assicurerà che il browser abbia analizzato il CSS prima di passare al JavaScript incluso più avanti nel documento HTML. Naturalmente, le immagini a cui si fa riferimento tramite CSS possono o non possono essere scaricate in quanto il browser analizza il codice JavaScript.
Quando si incorpora jQuery in una pagina Web, la maggior parte delle persone sceglie di scaricare il codice sorgente e di collegarsi ad esso da un dominio / host personale. Tuttavia, ci sono altre opzioni che coinvolgono qualcun altro che ospita il codice jQuery per te.
Google ospita diverse versioni del codice sorgente di jQuery con l'intento che venga utilizzato da chiunque. Questo è davvero molto utile. Nell'esempio di codice qui sotto sto usando a element to include a minified version of jQuery that is hosted by Google.
Google ospita anche diverse versioni precedenti del codice sorgente di jQuery e per ciascuna versione sono fornite varianti miniate e non miniate. Raccomando di utilizzare la variante non minified durante lo sviluppo, poiché gli errori di debugging sono sempre più facili quando si ha a che fare con codice non minified.
Un vantaggio dell'utilizzo di una versione di jQuery ospitata da Google è che è affidabile, veloce e potenzialmente memorizzato nella cache.
L'abitudine pronto()
l'evento non è interamente necessario. Se il tuo codice JavaScript non influenza il DOM, puoi includerlo ovunque nel documento HTML. Questo significa che puoi evitare il pronto()
evento del tutto se il tuo codice JavaScript non dipende dal fatto che il DOM sia intatto.
La maggior parte dei JavaScript al giorno d'oggi, in particolare il codice jQuery, comporterà la manipolazione del DOM. Ciò significa che il DOM deve essere completamente analizzato dal browser per poter operare su di esso. Questo è il motivo per cui gli sviluppatori sono rimasti bloccati su window.onload
giro sulle montagne russe per un paio d'anni.
Per evitare di usare il pronto()
evento per codice che opera sul DOM, puoi semplicemente inserire il codice in un documento HTML prima della chiusura
elemento. Ciò garantisce che il DOM sia completamente caricato, semplicemente perché il browser analizzerà il documento dall'alto verso il basso. Se si inserisce il codice JavaScript nel documento dopo gli elementi DOM che manipola, non è necessario utilizzare il pronto()
evento.
Nell'esempio qui sotto, ho dimenticato l'uso di pronto()
semplicemente posizionando il mio script prima che il corpo del documento si chiuda. Questa è la tecnica che uso in questo libro e nella maggior parte dei siti che costruisco.
Ciao, sono il DOM! Script via!