2012-08-03 75 views
1

我有一个滚动页面到给定偏移量的函数。我使用视差效果,因此我的所有元素(和页面或“幻灯片”)都根据滚动条位置进行定位。scrollTop在滚动前返回顶部

我的小问题是,当我点击另一张幻灯片的链接时,它会将页面滚动到所需的偏移量,但会触发绑定的事件。哪些应该可以,保持平稳的效果。但是有一点小故障,看起来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 ...

回答

5

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

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

编辑:我注意到你在i通过为slideNum但随后使用i,所以我改变了我的代码以使用存储在slideNum

+0

哇它的工作原理值传递的,谢谢你非常,那就是它!我完全忘记了默认操作。 – 2012-08-03 21:25:42