【问题标题】:jQuery window scroll event does not fire upjQuery 窗口滚动事件不会触发
【发布时间】:2011-08-06 21:30:16
【问题描述】:

我正在尝试通过 jquery 对 div 实现一个简单的“留在视口内”行为。为此,我需要将一个函数绑定到窗口的滚动事件,但我似乎无法让它启动:没有任何反应。我试过一个简单的alert(),console.log() 没有骰子。知道我做错了什么吗?

这段代码:

$(window).scroll(function () {  
            console.log("scrolling");           
});

位于 script.js 中,位于我的 html 文件的最底部

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>

更新 测试网址:http://pixeline.eu/test/menu.php

【问题讨论】:

  • 页面内容够长吗?完美运行:jsfiddle.net/fkling/x5NzM 如果没有可以滚动的内容,则不会引发scroll 事件。
  • 你的示例页面绑定到$(document).scroll尝试$(window).scroll
  • 滚动不触发似乎和你使用css的方式有关,现在正在做一些测试。
  • 还发现在 body 标签上有 overflow-x 会导致滚动事件也不会触发!在 Chrome 和 Firefox 中重现。
  • @BU0 我也发现确实如此(实际上你的评论刚刚解决了我遇到的一个令人困惑的问题)。谢谢。

标签: jquery window scroll


【解决方案1】:

您的 CSS 实际上将文档的其余部分设置为不显示溢出,因此文档本身不会滚动。最简单的解决方法是将事件绑定到正在滚动的东西,在你的情况下是div#page

所以很容易改变:

$(document).scroll(function() {  // OR  $(window).scroll(function() {
    didScroll = true;
});

$('div#page').scroll(function() {
    didScroll = true;
});

【讨论】:

  • 好的,那么在设计像开篇那样的页面时,一般应该注意什么?是否还有更多案例可以引发此类问题?
  • 哇,你成就了我的一天。一整天都被这个问题困住了。 div#pageUp 在我的情况下效果很好! .抽雪茄的时间
  • 太棒了!我在画布导航中遇到了类似的问题
  • 对我来说问题是 html, body { height: 100%; ... } 这导致滚动不起作用(默认在 grails 应用程序中)
  • 拯救了我的一天!!被困了一段时间。我的问题是body{ height: 100vh; } 谢谢!
【解决方案2】:

我的问题是我的 css 中有这段代码

html,
body {
    height: 100%;
    width: 100%;
    overflow: auto;
}

一旦我删除它,窗口上的滚动事件就会再次触发

【讨论】:

  • 我在这里遇到了同样的问题。看起来 scroll 事件不能很好地处理带有 css overflow 的元素。这甚至用scrollTop 来干扰动画...感谢分享!
  • 为了将来参考,在我的例子中,尝试使用 materializecss 的图钉组件 (materializecss.com/pushpin.html) 不起作用,因为 height:100% 在 html 和 body 上也是如此!
【解决方案3】:
$('#div').scroll(function () {
   if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight-1) {

     //fire your event


    }
}

【讨论】:

    【解决方案4】:

    解决办法是:

     $('body').scroll(function(e){
        console.log(e);
    });
    

    【讨论】:

      【解决方案5】:

      无论您尝试什么,对谁都不起作用(比如我): &lt;element onscroll="myFunction()"&gt;&lt;/element&gt; 像魅力一样工作

      正如他们在 W3 学校中所解释的那样 https://www.w3schools.com/tags/ev_onscroll.asp

      【讨论】:

        【解决方案6】:

        似乎没有什么对我有用,但这成功了

        $(parent.window.document).scroll(function() {
            alert("bottom!");
        });
        

        【讨论】:

          【解决方案7】:

          在我的情况下,你应该把函数放在$(document).ready

          $(document).ready(function () {
              $('div#page').on('scroll', function () {
               ...
              });
          });
          

          【讨论】:

            【解决方案8】:
            1. &lt;head&gt; 中的&lt;script&gt;&lt;/script&gt; 之间声明您的jQuery
            2. 将您的.scroll() 事件包装在
            $(document).ready(function(){
              //do something
            });
            

            【讨论】:

            • 不,也不起作用。将把链接放到网上,这样你们就可以看到它(没有)发生。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-10
            • 2017-03-22
            • 1970-01-01
            • 2010-11-17
            相关资源
            最近更新 更多