2011-08-22 12 views
5

Jeśli korzystam z funkcji obsługi $(document).ready() w ramach funkcji, czy nadal będzie można zagwarantować, że kod w niej zostanie uruchomiony, tylko jeśli dokument jest gotowy, nawet jeśli zdarzenie gotowe do drukowania zdarzyło się w przeszłości?

Odpowiedz

14

Tak.

Z funkcji jQuery readysource.

// Catch cases where $(document).ready() is called after the 
// browser event has already occurred. 
if (document.readyState === "complete") { 
    // Handle it asynchronously to allow scripts the opportunity to delay ready 
    return setTimeout(jQuery.ready, 1); 
} 
+1

+1 dla odpowiedniego kodu źródłowego. – alex

1

Tak. Możesz umieścić go w funkcji i zostanie wywołany za każdym razem, gdy zadzwonisz do tej funkcji.

4

Tak, to jest bezpieczne. jQuery ma kilka sposobów ustawiania takich programów obsługi, a jedynym "niebezpiecznym" jest $(document).bind("ready", handler). From the jQuery docs:

Wszystkie trzy z poniższych składni są równoważne:

  1. $(document).ready(handler)
  2. $().ready(handler) (nie jest to zalecane)
  3. $(handler)

Istnieje również $(document).bind("ready", handler). Zachowuje się to podobnie do metody gotowej, ale z jednym wyjątkiem: : Jeśli gotowe zdarzenie zostało już uruchomione i spróbujesz wykonać .bind("ready"), związany handler nie zostanie wykonany. Gotowe procedury obsługi powiązane w ten sposób są wykonywane po związaniu przez inne trzy powyższe metody: .

Powiązane problemy