【问题标题】:Material design and jQuery, scroll not working材料设计和jQuery,滚动不起作用
【发布时间】:2015-10-10 21:00:19
【问题描述】:

在包含 Google 的 Material 设计时,我无法使用 jQuery 的 .scroll 方法。我用Material Design Lite制作了网站的导航栏。

如果我排除/删除 ma​​terial.min.js,则 window 上的滚动方法可以完美运行。我的简单 jQuery 代码是这样的:

jQuery(window).scroll(function () {
  console.log("scrolled");
});

这里是 JSFiddle http://jsfiddle.net/wwjoxtvp/2/

这里是codepen:http://codepen.io/MustagheesButt/full/PqBYop/

如何在不删除材料设计的情况下让 jQuery 正常工作?可能发生了一些冲突,但控制台没有显示任何内容。

【问题讨论】:

    标签: javascript jquery material-design conflicting-libraries


    【解决方案1】:

    基本上,您应该将滚动事件绑定到 .mdl-layout__content 类,因为 Material Design lite 使该元素可滚动。

    $('.mdl-layout__content').on('scroll', function () {
      console.log('scrolled');  
    });
    

    【讨论】:

    • 所以滚动事件不会冒泡到窗口或文档?
    • 不,它没有——只有.mdl-layout__content 可以滚动——Material Design lite 对布局做了一些事情。
    • 如果我只想将其应用于一页,但 .mdl-layout__content 会包含在所有页面中。
    • @RahulSagore 然后只在该特定页面上执行上面的脚本。
    【解决方案2】:

    dark4p 解决了它,但可能的替代方法是使用:

    window.addEventListener('scroll', function(){ console.log('scrolled'); }, true);
    

    true 指示使用捕获而不是冒泡处理,因此它仍然会触发。不过,我不确定这是否会对材料产生任何负面影响。

    【讨论】:

    • 谢谢。这也有效。我只是想冒泡
    • 如何使用此代码检查是否已到达页面底部?
    • @RahulSagore 您应该能够使用.scrollTopheight/.innerHeight 计算得出。
    【解决方案3】:

    .mdl-layout__content 有 overflow-y:auto 并且你在这个 div 上滚动。如果你愿意,你可以改变这个,但我不推荐这个。

    jQuery(document).ready(function(){
    
        jQuery('.mdl-layout__content').scroll(function(){
    console.log('scrolled');
    });
    
    });
    

    http://jsfiddle.net/wwjoxtvp/34/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 2020-02-09
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2015-05-27
      • 2023-04-02
      相关资源
      最近更新 更多