2012-06-02 13 views
56

Ho la funzione globale jQuery memorizzata, ma al caricamento della pagina, voglio eseguirla dopo un ritardo di 1000. C'è qualcosa di sbagliato nella mia sintassi? So che il ritardo va sempre prima della funzione. Non risponde.Esegui funzione dopo il ritardo

funzione Global:

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

funzione di esecuzione:

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

Questo è quello che stai cercando per l'uomo :) spero che questo aiuti, http: // StackOverflow.it/questions/5322344/to-delay-javascript-function-call-using-jquery –

+0

Il primo problema evidente è che si sta tentando di chiamare showpanel come metodo di un altro oggetto (in questo caso, l'oggetto jQuery restituito dal ritardo () chiamata). Ma hai dichiarato showpanel come una funzione semplice e direttamente accessibile, piuttosto che un metodo di qualsiasi oggetto. JavaScript non funziona in questo modo. – BobS

risposta

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) 

}); 

Per ulteriori vedere here

29

Ho cercato e trovato la soluzione nel seguente URL è meglio.

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

E 'la pena di provare.

Si aggiunge la funzione data alla coda di funzioni da eseguire sull'elemento abbinato che è attualmente questo.

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

    // your Code | Function here 

    $(this).dequeue(); 

    }); 

e poi eseguire la funzione successiva nella coda per l'elemento corrispondente (s) che è attualmente questo nuovamente.

+0

Riassumi la soluzione e spiega come funziona? Il solo collegamento a una soluzione non è l'ideale, perché quel collegamento potrebbe smettere di funzionare in futuro ... –

+0

@devlincarnate Ho aggiornato il post. Leggilo e guardalo è semplice da capire o no. Sperare che sia utile. –

+0

Ciò funziona perfettamente –

1

Questa risposta è utile per capire come è possibile effettuare il ritardo utilizzando la funzione JQuery delay.

Immagina di avere un avviso e di voler impostare il testo di avviso, quindi mostrare l'avviso e dopo qualche secondo nasconderlo.

Ecco la soluzione più semplice:

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

è completamente semplice:

  1. .html() cambierà il testo della .alert-element
  2. .fadeIn(500) svanirà dopo 500 millisecondi
  3. JQuery funzione delay(5000) renderà 5000 millesimi di ritardo prima di chiamare la prossima funzione
  4. .fadeOut(1000) alla fine dell'istruzione svanirà la .alert-element
11

È possibile aggiungere funzione di timeout in jQuery (Visualizza avviso dopo 3 secondi) :

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