Puoi avere più $ (document) .ready (function () {…}); sezioni?

Se ho molte funzioni all’avvio, devono essere tutte sotto una sola:

$(document).ready(function() { 

o posso avere più di tali dichiarazioni?

Puoi averne di più, ma non è sempre la cosa più bella da fare. Cerca di non esagerare con l’uso, poiché comprometterà seriamente la leggibilità. Oltre a questo, è perfettamente legale. Vedi sotto:

http://www.learningjquery.com/2006/09/multiple-document-ready

Prova questo:

 $(document).ready(function() { alert('Hello Tom!'); }); $(document).ready(function() { alert('Hello Jeff!'); }); $(document).ready(function() { alert('Hello Dexter!'); }); 

Scoprirai che è equivalente a questo, nota l’ordine di esecuzione:

 $(document).ready(function() { alert('Hello Tom!'); alert('Hello Jeff!'); alert('Hello Dexter!'); }); 

Vale anche la pena notare che una funzione definita all’interno di un blocco $(document).ready non può essere chiamata da un altro blocco $(document).ready , ho appena eseguito questo test:

 $(document).ready(function() { alert('hello1'); function saySomething() { alert('something'); } saySomething(); }); $(document).ready(function() { alert('hello2'); saySomething(); }); 

l’output era:

 hello1 something hello2 

Puoi usare multipli. Ma puoi anche utilizzare più funzioni all’interno di un documento. Già:

 $(document).ready(function() { // Jquery $('.hide').hide(); $('.test').each(function() { $(this).fadeIn(); }); // Reqular JS function test(word) { alert(word); } test('hello!'); }); 

Sì, puoi facilmente avere più blocchi. Basta fare attenzione con le dipendenze tra di loro in quanto l’ordine di valutazione potrebbe non essere quello che ti aspetti.

, è ansible avere più chiamate $ (documento) .ready (). Tuttavia, non penso che tu possa sapere in che modo verranno eseguiti. (fonte)

Sì, è ansible ma puoi usare meglio un div #mydiv e usarli entrambi

 $(document).ready(function(){}); //and $("#mydiv").ready(function(){}); 

Sì, è perfettamente ok. Ma evita di farlo senza una ragione. Ad esempio, l’ho usato per dichiarare le regole globali del sito separatamente rispetto alle pagine individuali quando i miei file javascript sono stati generati dynamicmente, ma se continui a farlo ripetutamente lo renderà difficile da leggere.

Inoltre non è ansible accedere ad alcuni metodi da un altro jQuery(function(){}); chiama così è un’altra ragione per cui non vuoi farlo.

Con il vecchio window.onload però sostituirai il vecchio ogni volta che hai specificato una funzione.

Si, puoi.

Più sezioni pronte per documenti sono particolarmente utili se hai altri moduli che eseguono la stessa pagina che lo utilizza. Con la vecchia dichiarazione window.onload=func , ogni volta che si specificava una funzione da chiamare, sostituiva la vecchia.

Ora tutte le funzioni specificate sono accodate / accatastate (qualcuno può confermare?) Indipendentemente dalla sezione di documento pronto in cui sono specificate.

Penso che il modo migliore per andare sia passare alle funzioni nominate (controlla questo overflow per maggiori informazioni su quell’argomento) . In questo modo puoi chiamarli da un singolo evento.

Così:

 function firstFunction() { console.log("first"); } function secondFunction() { console.log("second"); } function thirdFunction() { console.log("third"); } 

In questo modo puoi caricarli in una singola funzione pronta.

 jQuery(document).on('ready', function(){ firstFunction(); secondFunction(); thirdFunction(); 

});

Ciò produrrà quanto segue al tuo console.log:

 first second third 

In questo modo puoi riutilizzare le funzioni per altri eventi.

 jQuery(window).on('resize',function(){ secondFunction(); }); 

Controlla questo violino per la versione funzionante

È legale, ma a volte causa un comportamento indesiderato. Ad esempio, ho utilizzato la libreria MagicSuggest e aggiunto due input MagicSuggest in una pagina del mio progetto e ho utilizzato funzioni separate di documenti pronti per ogni inizializzazione degli input. La primissima inizializzazione di Input ha funzionato, ma non la seconda e inoltre non ha dato alcun errore, Second Input non si è mostrato. Pertanto, consiglio sempre di utilizzare una funzione di pronto documento.

Puoi persino nidificare le funzioni di pronto documento all’interno dei file html inclusi. Ecco un esempio di jquery:

File: test_main.html

       

test_main.html

File: test_embed.html

 

test_embed.html

Uscita della console:

 test_main.html READY test_main.html:15 test_embed.html READY (program):4 

Il browser mostra:

test_embed.html

Puoi anche farlo nel seguente modo:

       

This is a test of jQuery!

This is a hidden paragraph.