【问题标题】:JQuery scroll() / scrollTop() not working in IE or FirefoxJQuery scroll() / scrollTop() 在 IE 或 Firefox 中不起作用
【发布时间】:2016-02-09 11:15:58
【问题描述】:

下面的脚本显示了从屏幕顶部到向上箭头的虚线,其位置取决于用户向下滚动页面的距离,以便他们可以单击箭头滚动回顶部。这在 Chrome 中效果很好,但在 IE 或 Firefox 中根本不起作用,虚线不会增长,箭头也不会在滚动时向下移动。

有人知道这是为什么吗?

HTML:

<div id="dotted-line">
    <div id="up-arrow">^up</div>
</div>

JS:

$(window).scroll(function(){
    if ($(window).scrollTop() > 10) {
        var pos = $('body').scrollTop();
        $('#dotted-line').css('height',pos/4);
        $('#up-arrow').css('top',pos/4);
    } else {
        $('#dotted-line').css('height','6px');
        $('#up-arrow').css('top','-150px');
    }
});

附:我试过JSFiddle,但我认为你不能滚动,因此我无法演示。

【问题讨论】:

标签: javascript jquery html css scroll


【解决方案1】:

Chrome 使用body 滚动,IE/Firefox 使用html 滚动。我个人认为html 更有意义,但这就像我的观点,伙计。

在尝试使用滚动执行操作时使用 'html,body' 作为选择器 - 这包括在您的 $(...).scrollTop() &gt; 10 检查中。

为避免每次都重新评估选择器,请考虑包装代码:

(function(undefined) {
    var container = $("html,body");
    $.windowScrollTop = function(newval) {
        if( newval === undefined) {
            return container.scrollTop();
        }
        else {
            return container.scrollTop(newval);
        }
    }
})();
// call $.windowScrollTop() to get position
// call $.windowScrollTop(100) to set position to 100

请注意,我不确定“检查未定义并单独调用”位的必要性。我不确定 jQuery 会如何对被逐字传递 undefined 作为参数做出反应,所以我玩得很安全。

【讨论】:

  • 抱歉,您的功能对我来说似乎很陌生。我看不出这是如何工作的,它不引用元素。我对 JQuery 不是很好,所以也许我只需要一些解释。谢谢。
  • 我给出的代码将是您添加到初始代码中的内容。然后您可以稍后调用它,例如在定义 $(window).scroll 事件时。
  • 我已经尝试使用您的代码,但无法正常工作;/
  • 它现在也在 Chrome 中打破了它。不过,我在控制台中没有任何错误。请帮忙。
  • Here 是一个简单的演示,展示了这段代码的使用,包括如何获取和设置滚动位置。
猜你喜欢
  • 1970-01-01
  • 2015-01-16
  • 2012-11-04
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多