我已经放弃了这一点,似乎完成了所有事情并且几乎跟着互联网上的每个链接寻找修复,但无济于事。
我正在使用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();
这也没有任何帮助。
这看起来很简单,但我无法让它正常工作!
答案 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()
仍有问题,但这似乎也有效。