0

これが私のコードです。私がやろうとしているのは、jQuery を使用して自分のページでニュースを更新することです。コードは意図したとおりに機能します。5 秒ごとにサイドバーからニュースが削除され、その場所に 2 つの更新が投稿されます。私ができないことは、更新を投稿する前にすべてのニュースを削除することです。今のところ、更新を追加し、同時に古いニュースをフェードアウトし始めます。これに適切なタイムアウトを設定する方法のアイデアはありますか?

function updateNews()
{

    $('.newsUpdate').load('news.html .news', function ()
    {
        $('.MainNews').fadeOut(); /* timeout should happen here! */
        var start = Math.floor(Math.random() * 4);
        var stop = start + 2;
        $(this).children('.news').slice(start, stop).css('display', 'none').attr('class', 'MainNews').insertAfter('.nav').fadeIn().children('span').remove();
        $(this).children('.news').remove();
    });
    setTimeout(updateNews, 5000);
}
updateNews();

HTML は非常に単純です。

<div class='sidebar'>
    <ul class='nav'>
        <li></li>
    </ul>
</div>
<article>main content of the site</article>
<div class='newsUpdate'>this created specially to upload news from news.html and manipulate them</div>
4

1 に答える 1

1

フェードアウトコールバックを使用する

function updateNews()
{

    $('.newsUpdate').load('news.html .news', function ()
    {
        $('.MainNews').fadeOut(1000,function(){
            //This code will be executed after the fadeOut
            var start = Math.floor(Math.random() * 4);
            var stop = start + 2;
            $(this).children('.news').slice(start, stop).css('display', 'none').attr('class', 'MainNews').insertAfter('.nav').fadeIn().children('span').remove();
            $(this).children('.news').remove();
        });
    });
    setTimeout(updateNews, 5000);
}

updateNews();
于 2013-02-24T10:03:56.447 に答える