2012-06-02 9 views
56

Tengo la siguiente función jQuery global almacenada, pero en la carga de página, quiero ejecutarla después de un retraso de 1000. ¿Hay algo mal con mi sintaxis? Sé que el retraso siempre va antes de la función. No está respondiendo.Función de ejecución después del retraso

función global:

function showpanel() {  
     $(".navigation").hide(); 
     $(".page").children(".panel").fadeIn(1000); 
    ;} 

función ejecutora:

parallax.about.onload=function(){ 
    $('#about').delay(3000).showpanel(); 
}; 
+0

Esto es lo que está buscando hombre :) Espero que esto ayude, http: // stackoverflow.com/questions/5322344/to-delay-javascript-function-call-using-jquery –

+0

El primer problema claro es que está intentando llamar a showpanel como un método de otro objeto (en este caso, el objeto jQuery devuelto por el retraso () llamada). Pero ha declarado que el panel de presentación es una función simple y directamente accesible, en lugar de un método de cualquier objeto. JavaScript no funciona de esta manera. – BobS

Respuesta

113
$(document).ready(function() { 

    // place this within dom ready function 
    function showpanel() {  
    $(".navigation").hide(); 
    $(".page").children(".panel").fadeIn(1000); 
} 

// use setTimeout() to execute 
setTimeout(showpanel, 1000) 

}); 

Para más ver here

29

me buscó y encontró la solución en la siguiente URL es mejor.

http://www.tutorialrepublic.com/faq/call-a-function-after-some-time-in-jquery.php

Merece la pena probar.

Se añade su función dada a la cola de las funciones a ejecutar en el elemento coincidente que se encuentra actualmente este.

$(this).delay(1000).queue(function() { 

    // your Code | Function here 

    $(this).dequeue(); 

    }); 

y luego ejecutar la siguiente función en la cola para el elemento (s) emparejado que actualmente es este de nuevo.

+0

¿Puede resumir la solución y explicar cómo funciona? Simplemente vincular a una solución no es ideal porque ese enlace puede dejar de funcionar en algún momento en el futuro ... –

+0

@devlincarnate Actualicé la publicación. Léala y vea que es fácil de entender o no. Espero que sea útil. –

+0

Esto funciona perfectamente –

1

Esta respuesta es útil para comprender cómo puede hacer que demore usando la función JQuery delay.

Imagine que tiene una alerta y desea establecer el texto de alerta, luego mostrar la alerta y después de unos segundos ocultarlo.

Aquí está la solución simple:

$(".alert-element").html("I'm the alert text").fadeIn(500).delay(5000).fadeOut(1000); 

es completamente simple:

  1. .html() va a cambiar el texto de .alert-element
  2. .fadeIn(500) se desvanecerá en después de 500 milisegundos
  3. jQuery delay(5000) función hará que 5000 milisegundos de retraso antes de llamar a la siguiente función
  4. .fadeOut(1000) al final de la declaración se desvanecerá la .alert-element
11

Puede agregar la función de tiempo de espera en jQuery (Mostrar alerta después de 3 segundos) :

$(document).ready(function($) { 
    setTimeout(function() { 
    alert("Hello"); 
    }, 3000); 
}); 
Cuestiones relacionadas