2011-08-22 15 views
5

Se utilizzo il gestore $(document).ready() all'interno di una funzione, garantirà comunque che il codice al suo interno verrà eseguito solo se il documento è pronto, anche se l'evento pronto per il documento si è verificato bene in passato?

risposta

14

Sì.

Dalla funzione 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 per il codice sorgente pertinente. – alex

1

Sì. Puoi metterlo in una funzione e si attiva ogni volta che chiami quella funzione.

4

Sì, è sicuro. jQuery ha diversi modi per impostare gestori come questo, e l'unico "non sicuro" è $(document).bind("ready", handler). From the jQuery docs:

Tutti e tre i seguenti sintassi sono equivalenti:

  1. $(document).ready(handler)
  2. $().ready(handler) (questo non è consigliato)
  3. $(handler)

C'è anche $(document).bind("ready", handler). Ciò si comporta in modo simile al metodo ready ma con un'eccezione : se l'evento pronto è già stato attivato e si prova a .bind("ready") il gestore associato non verrà eseguito. I gestori pronti vincolati in questo modo vengono eseguiti dopo qualsiasi limite dagli altri tre metodi precedente.

Problemi correlati