1

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

我的小问题是,当我单击指向另一张幻灯片的链接时,它会将页面滚动到所需的偏移量,但会触发绑定的事件。应该没问题,保持流畅的效果。但是有一个小故障,似乎该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...

4

1 回答 1

5

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

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

编辑:我注意到你传入iasslideNum但随后使用i,所以我更改了我的代码以使用存储在中的传入值slideNum

于 2012-08-03T21:13:27.397 回答