我想执行以下脚本
$('html, body').animate({
scrollTop: $('#deckblatt').offset().top
}, 1)
deckblatt是我页面上的第一个content-div。
Chrome不会这样做,但FF会这样做。
令人困惑的部分是我在第二页上运行了相同的异常方法,这在Chrome和FF上完全正常。
我错过了什么或者是否有更好的方法来实现我想要实现的目标,阻止浏览器在之前向下滚动时自动跳转到页面的某个部分?
提前谢谢。
修改
以下是第一个项目的完整代码,该代码未正确运行
这是第二个的代码,工作正常
答案 0 :(得分:0)
这不是Chrome错误。你的original code包含一些奇怪的东西。
scroll-top
类的任何元素,在向下滚动时应显示该元素,用户可以单击该元素滚动到顶部。 top
或bottom
ID中的任何元素,就像在另一个中一样。但是,您的JavaScript代码中未定义最重要的错误:target
变量之一,并使用“#top”字符串检查其相等性。这会导致ReferenceError异常。我想你想检查click事件的target元素的id是否等于"#top"
字符串。为此,您应该声明例如事件处理程序中的event
参数,并使用event.target.id
。
所以不要这样:
$('.scroll').click(function(){
$('html, body').animate({
scrollTop: $(this.id).offset().top
}, 500);
setTimeout("$('.scroll-top').fadeIn();",510 );
if (target == "#top"){$('.scroll-top').hide() ;}
});
您应该使用以下代码:
$('.scroll').click(function(event) { // declaring event variable as an argument
$('html, body').animate({
scrollTop: $(this.id).offset().top
}, 500);
// inspecting the id of the click event's target element
if (event.target.id == "#top") {
$('.scroll-top').hide();
}
else {
setTimeout(function () {
$('.scroll-top').fadeIn();
}, 510);
}
});
我修改了你的original code,取消了很多不需要的东西,但还剩下很多东西:
它仍然是一个小小的车,但现在滚动似乎正常工作。
但正如我在评论中所建议的,你绝对应该使用Ariel Flesler的 jQuery scrollTo插件完成这项任务:http://demos.flesler.com/jquery/scrollTo/