JQuery ScrollTop与fadeIn和fadeOut一起出现故障

时间:2013-05-23 15:23:14

标签: javascript jquery html jquery-animate

当使用带有fadeIn和fadeOut的动画滚动顶部时,我遇到了这个可怕的故障(有点跳跃或闪烁)。我有一个动态加载内容的Div。当用户单击主页面上的菜单按钮时,页面应滚动到顶部,然后开始淡出div,然后用它的新内容更新div,然后淡入。

它的工作时间很短,但另一半却出了问题。我尝试过firefox,chrome和opera,它们都有相同的行为。

function loadPage(url)
{
    $("html, body").animate({ scrollTop: 0}, 500);
    setTimeout(function (){ $('#centerBox').load(url); }, 1000);
    $('#centerBox').fadeOut(1000);
    $('#centerBox').fadeIn(1500);
}

代码说明: 因此,单击菜单按钮时将调用上述函数。主页面将滚动到顶部。 div的内容有一个计时器,以便在fadeout完全完成后更改内容,但在足够的时间内更改为fadein做好准备。

我使用以下方法调用loadPage(url)函数:

<a href="#" onclick="loadPage('news.html');"><img src="buttons/newsWhite.png"/></a>

2 个答案:

答案 0 :(得分:1)

请尝试将其更改为:

function loadPage(url)
{
    $("html, body").animate({ scrollTop: 0}, 500, function(){
        $('#centerBox').fadeOut(1000, function(){
            $('#centerBox').load(url, function(){
                $('#centerBox').fadeIn(1500);
            }); 
        });   
    });
}

在fadeOut动画完成之前,这不会加载网址。

答案 1 :(得分:0)

我似乎在这里解决了我的问题。

$(document).ready(function(){ 
        $('#news').click(function(){
            $("html, body").animate({ scrollTop: 0}, 500, function(){
                $('#all').fadeOut(1000, function(){
                    $('#centerBox').load('news.html', function(){
                        $('#all').fadeIn(1500);
                    }); 
                });   
            }); 
            return false;
        });
     });

然后我使用:

来调用它
 <a href="#" id="news");"><img src="buttons/newsWhite.png" width="130" height="25"/></a>

我是JavaScript和JQuery的新手(您可能已经知道了),您认为它可能与不使用document.ready()有关吗?