我有一个将页面滚动到给定偏移量的函数。我正在使用视差效果,所以我的所有元素(和页面,或“幻灯片”)都根据滚动条的位置定位。
我的小问题是,当我点击指向另一张幻灯片的链接时,它会将页面滚动到所需的偏移量,但会触发绑定的事件。哪个应该没问题,保持顺畅的效果。但是有一点小故障,似乎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
有同样的故障......
答案 0 :(得分:5)
您需要阻止链接的默认操作。我假设您的链接上有href="#"
之类的内容?将您的点击绑定更改为:
$('a.slide'+slideNum).bind('click', function(event) {
event.preventDefault();
$.scrollTo((defaultPositions[tempName].top/slidesScrollSpeed)+1+'px', 800);
});
修改:我发现您将i
作为slideNum
传递,但随后使用i
,因此我更改了代码以使用slideNum
中存储的传入值