Widziałem kilka postów na ten temat, ale żaden z rozwiązaniem, które działa dla mnie - i próbowałem wiele. Po prostu wykonuję prostą sekwencję - zanikanie div, ładowanie zawartości, zanikanie, ale zawartość, która jest ładowana, pojawia się na chwilę w pełnym przezroczystości, a następnie znika, a następnie wykonuje zanikanie. Próbowałem ustawić właściwość wyświetlania załadowanego div na none, a następnie pokazać ją w funkcji zanikania, ustawiać opóźnienia, wyświetlać itp. Próbowałem fadeTo, fadeOut itp. Nawiasem mówiąc, hide() działa dobrze, ale nie o to mi chodzi.

Oto mój kod:

...

$('#bio_container').fadeOut(500,loadContent(ident));
});

function loadContent(ident){
    $('#bio_container').load('/index.php/ajax/bios/' + ident,showContent);
}

function showContent(){
    $('#bio_container').fadeIn(500);
}

Wszelkie pomysły będą mile widziane.

0
mheavers 15 lipiec 2011, 18:58

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego.

$('#bio_container').fadeOut(500, function(){
     loadContent(ident)
});

Edycja: Jeśli spojrzysz na definicję fadeOut, akceptuje ona wywołanie zwrotne jako argument i wywołuje tę funkcję po zakończeniu animacji. Tak więc odwołanie zwrotne jest albo definicją funkcji wbudowanej, jak powyższa, albo po prostu nazwą funkcji bez nawiasów. Jeśli podasz coś takiego, someFunction(), oceni funkcję, a następnie przyjmie wartość zwróconą jako argument. Możliwe też, że po zakończeniu animacji i wywołaniu wyniku wyrzuci wyjątek.

1
Yiğit Yener 15 lipiec 2011, 22:08
Zredagowałem odpowiedź i dodałem trochę informacji z perspektywy niewprawnego :)
 – 
Yiğit Yener
15 lipiec 2011, 22:09

Dzieje się tak, ponieważ javascript jest wykonywany w formie liniowej, a fadeOut(time,fn) wykonuje fn, a NASTĘPNIE wykonuje te fade.

Aby to naprawić, używam wtyczek JQuery, w Twoim przypadku proponuję ten prosty pokaz slajdów lub jeśli szukasz czegoś bardziej konkretnego, zobacz ta lista.

PS: Przepraszam za mój zły angielski.

0
Community 20 czerwiec 2020, 12:12