2011-12-04 10 views
9

Powiel możliwe:
javascript domready?W JQuery, jak sprawdzić, czy DOM jest gotowy?

Chcę sprawdzić, czy $(function(){ }); jest "gotowy".

return true jeśli DOM jest gotowy, w przeciwnym wypadku false

+1

Czy możesz powiedzieć coś więcej ... – Yacov

+0

przeformułować, proszę? Nie bardzo rozumiem, czego chcesz. DOM jest gotowy bezpośrednio przed wywołaniem zwrotnym (w twoim przykładzie działa funkcja 'function() {}'). – cHao

+0

Osoby (w tym dokumenty interfejsu API jQuery) nazywają to "funkcją gotową do pracy". ;-) –

Odpowiedz

21

z kodu jQuery

 
if (jQuery.isReady) { 
    fn.call(document, jQuery); 
} 

+0

Dokładnie tego szukam !! – TIMEX

+2

Po prostu komentując, że nie jest to udokumentowana właściwość, a autorzy jQuery mogliby zmienić/usunąć tę właściwość w dowolnym momencie bez powiadomienia. Używaj na własne ryzyko i zachowaj ostrożność podczas aktualizacji jQuery. –

2

Ta funkcja będzie wykonać tylko wtedy, gdy dom jest gotowy. To jest klucz do owinięcia twojego kodu w tę funkcję;). Mimo to niektóre rzeczy (takie jak obrazy, odroczone skrypty itp.) Mogą nie zostać jeszcze w pełni załadowane lub renderowane, dlatego należy pamiętać.

1

Można użyć jQuery.isReady, ale to nieudokumentowane i należy ich unikać.

Jeśli wystarczy uruchomić coś po DOM jest gotowy, można po prostu zadzwonić

$(document).ready(function() { 
    ... 
}); 

jako normalne - że natychmiast uruchomić kod, gdy DOM jest gotowy i czekać, aż to jest, jeśli nie.

13

Można użyć wyraźne wezwanie

$(document).ready(function(){ 
    // do this after dom is ready 
}); 

lub użyj skrótu

$(function(){ 
    // do this after dom is ready 
}); 

Jest również przydatny do owinąć jQuery w anonimowej funkcji, gdy używasz innych bibliotek; Również bardzo często używa się tego podczas pisania wtyczek jQuery.

(function($, window){ 
    // use $ here freely if you think any other library might have overridden it outside. 
    $(function(){ 
    // do this after dom is ready 
    }); 
})(jQuery, window); 

Wreszcie, można użyć jQuery.isReady (Bool)

if (jQuery.isReady) { 
    // do something 
} 
+0

Możesz także zrobić "jQuery (function ($) {/ * jQuery jest aliasingiem do $ wewnątrz tego bloku, nawet jeśli inna biblioteka jest normalnie przypisana do $ * /});' – redbmk

Powiązane problemy