2012-08-13 9 views
5

Jako przykład:W jaki sposób jQuery.ready() traktuje wywołanie samej siebie?

$(function(){ 
    //do stuff 
    $(function(){ 
     //do other stuff 
    }); 
}); 

Oczywiście napisane w kodzie to wydaje się nie mieć sensu. Jednak wtyczka działająca z elementami HTML może używać .ready() podczas wykonywania samego elementu w głównym .ready(). W jaki sposób jQuery obsługuje to dokładnie? To wyraźnie działa, ale czy robi coś specjalnego?

Odpowiedz

2

Wywołanie funkcji .ready() po zainicjowaniu modelu DOM spowoduje natychmiastowe uruchomienie nowego menedżera .

Oznacza to, że gdy pierwsza funkcja jest wykonywana, wewnętrzna jeden zostanie wykonany natychmiast

Dodatkowo, jQuery pozwala powiązać wiele funkcji do jednego zdarzenia i będzie je nazwać wszystko (zakładając, że nie jeden generuje błąd)

można przetestować zachowanie poprzez wykonanie na już załadowane strony:

jQuery(document).ready(function(){ 
     for(i=0;i<1000000;i++); 
     console.log('2'); 
    }); 
console.log('1'); 
+1

Is It "natychmiast", jak w _synchronously_ (przed '.ready()' zwrotów)? – nnnnnn

+0

Tak, to jest synchroniczne. Możesz przetestować wykonywanie tego na już załadowanej stronie: jQuery (document) .ready (function() {for (i = 0; i <1000000; i ++) {;}; console.log ("2 ');}); console.log ("1"); –

+0

Otrzymuję to: 'global .ready() START, 0ms; globalny .ready() END, 8ms; plugin .ready()() START, 11ms; plugin .ready() END, 12ms'. Rezultat jest stały niezależnie od tego, czy wywołam wtyczkę na początku, czy na końcu globalnego .ready. Tak więc wywołanie wewnątrz wtyczki wydaje się być ustawione w kolejce po wykonaniu już wykonywanego .ready, z którego jest wywoływane – Armatus

Powiązane problemy