2013-09-26 11 views
10

W mojej funkcji jquery mam obraz gif programu ładującego. Po tym, jak to pokażę, chcę odłożyć na sekundę opóźnienie, a następnie kontynuować wykonywanie reszty kodu. Jak mogę to zrobić?jquery opóźnia wykonanie kodu

$('#loader').css('display', ''); 

    //// I want to put here a delay. 

    var myDate = new Date(); 
    myDate.setFullYear(2013,8,2); 

    var checkyear = myDate.getFullYear(); 
    var monthly =myDate.getMonth(); 
    var daily =myDate.getDate(); 

    $('#day').html(daily) ; 
    $('#month').html(months[monthly]) ; 
    $('#year').html(checkyear) ; 
+0

check 'window.setTimeout()' w JS docs wyboru – devnull69

+0

Zaznacz to odpowiedź na zewnątrz, http://stackoverflow.com/questions/1183872/put-a-delay-in-javascript – zahirdhada

+3

Proszę używać funkcja wyszukiwania na stackoverflow następnym razem, zanim opublikujesz pytanie, które zostało zadane (i odpowiedziałeś) jak milion razy – devnull69

Odpowiedz

21

Ustaw limit czasu tak:

var delay = 1000; 
setTimeout(function() { 
// your code 
}, delay); 

Przykład http://jsfiddle.net/HuLTs/

+0

Działa to świetnie w Firefoksie, ale dlaczego nie w Chrome? –

+0

Nie ma problemu w Chrome dla mnie. Utwórz nowy temat ze swoim pytaniem. –

+0

Masz rację, pomyliłem się ... –

4

Czy próbowałeś .delay? Sposób

$('#loader').show(1).delay(1000).hide(1); 

.delay(), najlepiej do opóźniania pomiędzy kolejkowanych jQuery efektów. Ponieważ jest on ograniczony - nie oferuje na przykład sposobu na anulować delay-.delay() nie jest zamiennikiem dla natywnej funkcji JavaScript JavaScript setTimeout, która może być bardziej odpowiednia dla niektórych przypadków użycia .

Demo: http://jsfiddle.net/SBrWa/

+2

'$ ('# loader') show(). Delay (1000) .hide (0);' byłoby wystarczające;) +1 dla pokazania alternatywy. Podobnie jak w środku, DOC dotyczące delay() wydaje się nie być dokładne. Wygląda na to, że opóźnienie() można anulować, używając metody jq 1.9 .finish() –

4
$(document).ready(function(){ 
    setTimeout(function(){ 
     //your code 
    }, 
    2000); 
}); 

Tutaj 2000 dotyczy 2 seconds

0

Można użyć tego kodu,

$('#loader').css('display', ''); 

setTimeout(function() { 
    var myDate = new Date(); 
    myDate.setFullYear(2013,8,2); 

    var checkyear = myDate.getFullYear(); 
    var monthly =myDate.getMonth(); 
    var daily =myDate.getDate(); 

    $('#day').html(daily) ; 
    $('#month').html(months[monthly]) ; 
    $('#year').html(checkyear) ; 
}, 1000); 
0

Spróbuj tego

$(function(){ 
    $('#loader').css('display', ''); 
    setTimeout(function(){ 
     var myDate = new Date(); 
     myDate.setFullYear(2013,8,2); 
     var checkyear = myDate.getFullYear(); 
     var monthly =myDate.getMonth(); 
     var daily =myDate.getDate(); 
     $('#day').html(daily) ; 
     $('#month').html(months[monthly]) ; 
     $('#year').html(checkyear) ; 
    },1000);// 1 second delay 
}); 
Powiązane problemy