1

我有一些从包含 html 块的 ajax 调用返回的 html。我想淡出现有的块并淡入新的块,以便它按顺序发生(每次 1 个)。现在它同时发生。

似乎在回调进行时,$.each 函数一直在遍历剩余的 html 块,因此它们都同时淡入和淡出。有没有办法做到这一点,每个 html 块在移动到下一个之前淡入淡出?

代码

   var $newestResults = $('#newest .pcVideomaincontainer:lt(' + data.d.Newest.ChannelsReturned + ')');
            $newestResults.fadeOut('slow'), function () { remove() };
            $.each($newestResults, function (index, value) {
                $(this).animate({
                    opacity: 0
                }, 1000,
                function () {
                    $(this).remove();
                    $('#pcContentHolder_newest').prepend(data.d.MostFamous.HtmlChannelSegments[index]).hide().fadeIn('slow');
                });
            });
4

2 回答 2

3

根据当前索引添加延迟。

        $.each($newestResults, function (index, value) {
            $(this).delay(index*1000).animate({
                opacity: 0
            }, 1000,
            function () {
                $(this).remove();
                $('#pcContentHolder_newest').prepend(data.d.MostFamous.HtmlChannelSegments[index]).hide().fadeIn('slow');
            });
        });

我还没有测试过,但是fadeIn也应该被延迟,因为它在第一个动画方法的回调中已经被延迟了。

于 2012-06-21T20:43:13.200 回答
0

你可以在你的函数周围使用一个具有类似延迟的超时吗?

window.setTimeout(your_function,1000)

于 2012-06-21T20:44:48.880 回答