【问题标题】:How to scroll to the top of page in IE with jQuery如何使用 jQuery 在 IE 中滚动到页面顶部
【发布时间】:2011-11-29 16:05:56
【问题描述】:

我在下面使用 jQuery 有这个 Javascript,它在页面上显示一个 div,单击该 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;
});

【问题讨论】:

  • 这可能纯粹是因为 IE 有点垃圾。与其他浏览器相比,即使在功能相当强大的系统上,jQuery 也很难做很多事情(尤其是同时制作多个动画)。据我所知,滚动动画适用于 IE8 - 渲染中间阶段可能需要很长时间,所以看起来好像没有任何动画。
  • 你可以尝试改变时间让它动画超过 10 秒,看看它是否仍然跳跃。

标签: javascript jquery


【解决方案1】:

这是因为 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 为真的更明显的可能性,对吧?)

【讨论】:

    【解决方案2】:
    $.fn.scrollView = function() {
    return this.each(function() {
        $('html, body').animate({
            scrollTop: $(this).offset().top
        }, 1000);
    });
    };
    

    然后这样使用

    $('html').scrollView();
    

    您可以摆弄here(只需滚动页面底部并单击最后一个列表项)

    【讨论】:

    猜你喜欢
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多