Javascript scrollTo仅在完整页面重新加载时触发

时间:2013-12-11 02:46:24

标签: javascript jquery ruby-on-rails

我已经放弃了这一点,似乎完成了所有事情并且几乎跟着互联网上的每个链接寻找修复,但无济于事。

我正在使用jquery scrollTo()localScroll()插件来动画我网站的几个页面上的一些滚动到锚点/ ID。问题是,当页面在浏览器中完全重新加载或直接通过其URL访问时(仅与完全重新加载相同),它仅滚动动画。如果您使用导航scrollTo()跟踪指向页面的链接,则插件不起作用,而是跳转到锚点(默认行为)。

$(document).ready(function(){
$('.home .col-xs-6').localScroll();
    $('.tour .btn-group').localScroll();
});

javascript加载到一个文件中,该文件出现在HEAD中(我已经检查过),我也尝试将上面的代码直接放在.btn-group链接所在的页面上,但它仍然只是每次在完整的浏览器刷新时工作,就像我说的,当你使用网站导航导航到包含上述代码的页面时,它将恢复为默认行为。

我也尝试将ready函数更改为on('load'),但没有做任何事情,而且我已经包含了preventDefault();这也没有任何帮助。

这看起来很简单,但我无法让它正常工作!

1 个答案:

答案 0 :(得分:0)

所以我最终完全取消了插件并使用下面的解决方案:

$(document).on('page:load', function() {
$(".scroll").click(function(event){
         event.preventDefault();
         //calculate destination place
         var dest=0;
         if($(this.hash).offset().top > $(document).height()-$(window).height()){
              dest=$(document).height()-$(window).height();
         }else{
              dest=$(this.hash).offset().top;
         }
         //go to destination
         $('html,body').animate({scrollTop:dest}, 1500,'swing');
     });
});

哪个有效。我只需要将scroll添加到链接类。我相信问题的一部分与rails中的turbolinks gem有关,所以我添加了page:load函数使它工作。不幸的是,即使增加了功能,localScroll()仍有问题,但这似乎也有效。