scrollTop在滚动之前返回顶部

时间:2012-08-03 21:01:53

标签: javascript jquery

我有一个将页面滚动到给定偏移量的函数。我正在使用视差效果,所以我的所有元素(和页面,或“幻灯片”)都根据滚动条的位置定位。

我的小问题是,当我点击指向另一张幻灯片的链接时,它会将页面滚动到所需的偏移量,但会触发绑定的事件。哪个应该没问题,保持顺畅的效果。但是有一点小故障,似乎scrollTop函数在正确执行之前会回到顶部一毫秒。因此,在每次点击链接然后滚动到正确位置之前,它看起来像是另一页显示毫秒。

这是我的代码:

    for(var i=1;i<8;i++)
    {
        (function(slideNum) {
            var tempName = 'slide'+slideNum;
            //console.log(defaultPositions["slide"+i].top);
            $('a.slide'+i).bind('click', function() {
                $.scrollTo((defaultPositions[tempName].top/slidesScrollSpeed)+1+'px', 800);
            });
        })(i);
    }

我知道在这段代码中可能很难找到问题,但我发现这与此有关。你知道什么是错的吗?

谢谢!

PS:scrollTo是一个jQuery插件,但与scrollTop有同样的故障......

1 个答案:

答案 0 :(得分:5)

您需要阻止链接的默认操作。我假设您的链接上有href="#"之类的内容?将您的点击绑定更改为:

$('a.slide'+slideNum).bind('click', function(event) {
    event.preventDefault();
    $.scrollTo((defaultPositions[tempName].top/slidesScrollSpeed)+1+'px', 800);
});

修改:我发现您将i作为slideNum传递,但随后使用i,因此我更改了代码以使用slideNum中存储的传入值