我在下面使用jQuery这个Javascript,在页面上显示一个div,当点击它会慢慢地将页面滚动回到页面顶部时,它适用于chrome和firefox,但是当在IE 8上使用它只是去立即顶部而不是慢速向上滚动
有谁能告诉我如何克服这个问题?
// BACK TO TOP
jQuery(window).scroll(function() {
if (jQuery(window).scrollTop() > 0) $('#jump-link').show();
else
$('#jump-link').hide();
});
jQuery('#jump-link').click(function() {
jQuery('html, body').stop().animate({
scrollTop: 0
}, 900);
return false;
});
答案 0 :(得分:2)
这是因为重复调用onscroll处理程序。在将滚动动画设置为顶部之前删除onscroll处理程序,然后稍后将其添加回来。 Id est,用以下代码替换第二个块:
jQuery('#jump-link').click(function() {
jQuery(window).unbind('scroll');
$('#jump-link').hide();
jQuery('html, body').stop().animate({
scrollTop: 0
}, 900, function() {
jQuery(window).scroll(function() { ... });
});
return false;
});
请注意,您可以通过命名滚动函数来清理代码,并在解绑和重新绑定函数中按名称引用它。
(我假设你已经检查了$.fx.off
真实的更明显的可能性,对吗?)
答案 1 :(得分:1)
$.fn.scrollView = function() {
return this.each(function() {
$('html, body').animate({
scrollTop: $(this).offset().top
}, 1000);
});
};
并使用那样的
$('html').scrollView();
你可以摆弄here(只需滚动页面底部并点击最后一个列表项)