$(window).scrollTop在预期之前执行?

时间:2013-08-27 13:24:39

标签: javascript jquery

如果页面位于我的应用的某个页面上,我希望页面滚动到顶部。

在页面显示后需要执行此操作。

我正在使用代码:

$('.current-page, #'+desiredPage).toggleClass('current-page')

if(desiredPage === 'page-search-results'){

    $(window).scrollTop(scrollPosition)

}else{

    $(window).scrollTop(0)

}
然而,在实际切换类之前,页面会在瞬间滚动到顶部(该类具有显示页面的css)。为什么是这样?以及如何确保它只发生在?之后?

这只能在手机上看到。

根据我尝试使用的评论/答案:

$('.current-page, #'+desiredPage).toggleClass('current-page').promise().done(function(){

    if(desiredPage === 'page-search-results'){

        $(window).scrollTop(scrollPosition)

    }else{

        $(window).scrollTop(0)

    }

});

但它仍然会发生?

1 个答案:

答案 0 :(得分:0)

如果在函数末尾添加return false;(即在if / else子句之后),它可能会解决问题吗?

我一直在努力解决类似的问题,并在本文的底部找到了提示:

http://chris-spittles.co.uk/jquery-smooth-page-scrolling/

它说那里,

  

返回false只会阻止浏览器执行其默认行为

对我来说,在页面上给出的示例中,这意味着锚点不会跳转到动画前的页面,但是,既然你没有使用锚点,而是切换类,我不太确定在这种情况下,“默认行为”。

希望它有所帮助。