Después de todo $(document).ready() se han ejecutado, hay un evento para que?

Tengo un first.js archivo incluido en la página index.php que tener algo como esto:

$(function(){

    $("#my_slider").slider("value", 10);

});

Y en index.php tengo algunas dynamicly creado slidders:

<?php function slidders($config, $addon)
{
    $return = '
    <script type="text/javascript">
        $(function() {
            $("#slider_'.$addon['p_cod'].'").slider({
            min: '.$config['min'].',
            max: '.$config['max'].',
            step: '.$config['step'].',
            slide: function(event, ui) {
                $("#cod_'.$addon['p_cod'].'").val(ui.value);
                $(".cod_'.$addon['p_cod'].'").html(ui.value+"'.@$unit.'");
            },
            change: function(event, ui) { 
                $("#cod_'.$addon['p_cod'].'").change();
            }
        });
            $("#cod_'.$addon['p_cod'].'").val($("#slider_'.$addon['p_cod'].'").slider("value"));
            $(".cod_'.$addon['p_cod'].'").html($("#slider_'.$addon['p_cod'].'").slider("value")+"'.@$unit.'");
    });
    </script>';
    return $return;
} ?>

El problema, porque mi index.php los deslizadores se crea una instancia después de mi first.js no puedo configurar un valor allí, hay algún evento como «después de todo $(document).ready() se ha ejecutado» que puedo usar en first.js para manipular los controles deslizantes creado en index.php?

  • No entiendo el código. ¿Qué estás tratando de lograr? Esto provocará el bloqueo de todos modos, ya no estás escapando de los saltos de línea.
  • Lo siento si no fui claro, el segundo código es PHP. Va a editar para que sea más claro.
  • 23384 vistas…wow 😀
InformationsquelleAutor mjsilva | 2010-06-09

6 Kommentare

  1. 74

    No sé cómo decir, cuando el último $(document).ready() función despedido, pero $(window).load() función se activa después de la $(document).ready()

    • Gracias a Juan que era la solución acabo de cambiar mi $(function(){(«#my_slider»).control deslizante(«valor», 10);}); por $(window).load(function(){(«#my_slider»).control deslizante(«valor», 10);}); y funcionó. Saludos hermano!
    • Giro en esta respuesta: a veces documento listo incendios después de la ventana.de carga. stackoverflow.com/questions/20133159/…
  2. 63

    Lo más seguro es invocar $(window).load() dentro de $(document).ready(). Esto para conservar el orden de ejecución en todos los casos, asegurándose de que su ejecución últimos código no se pasa a $(window).load() hasta que todos los $(document).ready() scripts se han completado. Sin esto no hay posible de condiciones de carrera en algunos navegadores donde $(window).load() puede ser invocada después de todo $(document).ready() scripts tienen comenzó pero antes de que todo $(document).ready() scripts tienen terminado.

    $(document).ready(function() {
        $(window).load(function() {
            //this code will run after all other $(document).ready() scripts
            //have completely finished, AND all page elements are fully loaded.
        });
    });
    • -1 no quiero ser irrespetuoso, pero esto no suena verdadero. Se puede explicar más o dejar una referencia? ¿Qué navegadores puede que esto ocurra y lo hacen de manera diferente? Sólo puedo ver a este ser verdadero si el JS eventos fueron multiproceso (o el DOMDocumentReady controlador en jQuery dado), y aún así, no creo que su corrección se abordaría el tema.
    • Más detalles en este ASÍ que la pregunta: la Ventana de Carga Dentro de Un Documento Listo sin duda se produce en IE8. Este es un cinturón y tirantes de enfoque; es inofensivo y evita en algunos casos el borde.
    • Gracias por este consejos !
  3. 16

    Basada en la de Ian respuesta me di cuenta de esto (prueba de trabajo):

    jQuery(document).ready(function() {
        jQuery(document).ready(function() {
            /* CODE HERE IS EXECUTED AS THE LAST .ready-CALLBACK */
        });
    });

    Por supuesto, esto es debido a que el listo devoluciones de llamada se invoca en el orden en que fueron asignados. En el momento, cuando su exterior listo de devolución de llamada que se invoca, el resto de los guiones deben tener su listos devoluciones de llamada ya se han asignado. Por lo que la asignación de su lista de devolución de llamada (la interior) ahora conducirá a la suya, siendo el último uno.

  4. 13

    Probar este truco/hack apestoso:

    $(function(){
        $(function(){
    
            $("#my_slider").slider("value", 10);
    
        });
    });

    Parece estúpido derecho? Funciona porque jQuery ejecuta los controladores de eventos en el orden en que fueron añadidos. Agregar un controlador de eventos en el controlador de eventos es tan tarde como puede (sólo asegúrese de que usted no está haciendo esto en cualquiera de los controles deslizantes accidentalmente; es muy fácil de hacer).

    Prueba de concepto. http://jsfiddle.net/9HhnX/

  5. 3

    Uno de los objetivos de jQuery $(document).listo() la función es que el estándar de javascript ventana.evento onload no se ejecutará hasta que todo en el que se carga la página (incluyendo imágenes, etc.), aunque las funciones que pueden ser útiles para empezar a correr bien antes de eso. Así que $(document).ready() se ejecuta tan pronto como el árbol DOM de la jerarquía se construye.

    Teniendo en cuenta esto, sería una opción para ejecutar el «después de todo lo demás de secuencia de comandos» en la página de carga. Esto no garantiza que todo el $(document).listo() guiones han completado, aunque.

    Una mejor, pero más complicado opción es crear una función que comprueba la existencia de los controles deslizantes, y si no existen, las llamadas «setTimeout» en sí, por lo que se puede esperar de unos pocos milisegundos y pruebe de nuevo.

    (Para responder a su pregunta, no, no hay «después de todo $(document).ready() se ha ejecutado» de devolución de llamada.)

  6. 0

    Sería mejor agregar una clase única para los deslizadores en lugar de la #my_slider ya que sólo el fuego para el elemento con id = my_slider.

    Si quieres tener la misma funcionalidad que usted debe comprobar hacia fuera .en vivo desde jquery va a poner la misma funcionalidad en los elementos que se agregan después de la unión.

    Si que no va a funcionar para usted, a continuación, al agregar los nuevos controles deslizantes usted tendrá que ir a través de ellos en el DOM y llamar a la función necesaria.

    • Hola darren102, mi reguladores tienen Identificadores únicos, la codded que he publicado no reelegir a mi la ejecución de código, acabo de publicar tiene es como un ejemplo de lo que yo estaba tratando de lograr. Lo siento si que hace que som confusión, todavía estoy un newb en la formulación de preguntas @ stackoverflow 😛

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...