2011-12-04 18 views
9

Duplicar posibles:
javascript domready?En JQuery, ¿cómo puedo verificar si el DOM está listo?

Quiero comprobar si $(function(){ }); está "listo".

Volver cierto si DOM está listo, falso en caso contrario

+1

¿Puede usted explicar más ... – Yacov

+0

Rephrase, por favor? No entiendo muy bien lo que quieres. El DOM está listo justo antes de la devolución de llamada (en su ejemplo, se ejecuta 'function() {}'). – cHao

+0

Las personas (incluidos los documentos de jQuery API) lo llaman la "función de documento preparado". ;-) –

Respuesta

21

De código jQuery

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

+0

¡Exactamente lo que estoy buscando! – TIMEX

+2

Simplemente haciendo un comentario aquí que esta no es una propiedad documentada y los autores de jQuery podrían cambiar/eliminar esta propiedad en cualquier momento sin previo aviso. Utilice bajo su propio riesgo y tenga cuidado al actualizar jQuery. –

2

Esa función sólo se ejecutará cuando el DOM está listo. Ese es el punto de envolver su código en esa función;). Una vez dicho esto, es posible que algunas cosas (como imágenes, scripts diferidos, etc.) aún no se hayan cargado o procesado completamente, así que tenga en cuenta.

1

Usted puede utilizar jQuery.isReady, pero es indocumentado y debe evitarse.

Si sólo tiene que ejecutar algo después de que el DOM está listo, sólo puede llamar a

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

con normalidad - que va a ejecutar el código de inmediato si el DOM está listo y esperar hasta que sea si no.

13

Puede utilizar la llamada explícita

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

O utilice el acceso directo

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

También es útil para envolver su jQuery en una función anónima cuando se está utilizando otras bibliotecas; También es muy común usar esto al escribir complementos de 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); 

Por último, puede utilizar jQuery.isReady (bool)

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

También puede hacer 'jQuery (función ($) {/ * jQuery tiene un alias de $ dentro de este bloque incluso si otra biblioteca se asigna normalmente a $ * /});' – redbmk

Cuestiones relacionadas