¿Puedes tener varios $(document).ready(function(){ ... }); secciones?

Resuelto leora asked hace 15 años • 11 respuestas

Si tengo muchas funciones al inicio, ¿todas tienen que estar en una sola?

$(document).ready(function() {

¿O puedo tener varias declaraciones de este tipo?

leora avatar Aug 25 '09 18:08 leora
Aceptado

Puedes tener varios, pero no siempre es lo mejor que puedes hacer. Trate de no abusar de ellos, ya que afectará seriamente la legibilidad. Aparte de eso, es perfectamente legal. Vea lo siguiente:

http://www.learningjquery.com/2006/09/multiple-document-ready

Probar esto:

$(document).ready(function() {
    alert('Hello Tom!');
});

$(document).ready(function() {
    alert('Hello Jeff!');
});

$(document).ready(function() {
    alert('Hello Dexter!');
});

Verás que es equivalente a esto, observa el orden de ejecución:

$(document).ready(function() {
    alert('Hello Tom!');
    alert('Hello Jeff!');
    alert('Hello Dexter!');
});

También vale la pena señalar que una función definida dentro de un $(document).readybloque no se puede llamar desde otro $(document).readybloque. Acabo de ejecutar esta prueba:

$(document).ready(function() {
    alert('hello1');
    function saySomething() {
        alert('something');
    }
    saySomething();

});
$(document).ready(function() {
    alert('hello2');
    saySomething();
}); 

la salida fue:

hello1
something
hello2
karim79 avatar Aug 25 '2009 11:08 karim79

Puedes usar varios. Pero también puedes usar múltiples funciones dentro de un documento. Listo también:

$(document).ready(function() {
    // Jquery
    $('.hide').hide();
    $('.test').each(function() {
       $(this).fadeIn();
    });

    // Reqular JS
    function test(word) {
       alert(word);
    }
    test('hello!');
});
Mickel avatar Aug 25 '2009 11:08 Mickel

Sí, puedes tener fácilmente varios bloques. Solo tenga cuidado con las dependencias entre ellos, ya que el orden de evaluación podría no ser el esperado.

pjesi avatar Aug 25 '2009 11:08 pjesi

Sí, es posible tener múltiples llamadas $(document).ready(). Sin embargo, no creo que puedas saber de qué manera se ejecutarán. (fuente)

JW. avatar Aug 25 '2009 11:08 JW.

Sí, es posible, pero puedes usar mejor un div #mydiv y usar ambos.

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

//and

$("#mydiv").ready(function(){});
 avatar Aug 25 '2009 11:08