【问题标题】:Can't delegate scroll event using jQuery无法使用 jQuery 委托滚动事件
【发布时间】:2013-09-04 21:17:31
【问题描述】:

我正在尝试使用 jQuery 在特定类元素的滚动上触发事件,如下所示:

$('body').on('scroll', '.overflow', function() { do stuff; });

但是,do stuff 永远不会发生。我做了一些实验,看起来好像不能使用.on 委派滚动事件。 (有关测试用例,请参阅 http://jsbin.com/aJeDiru/2)。

有没有办法让它委托?或者有一个非常好的理由™为什么不应该以这种方式设置委托?

【问题讨论】:

  • 好吧,“滚动”对于冒泡来说是一个奇怪的事件,因为如果子元素独立滚动,父元素获取它并不一定有意义。
  • stackoverflow.com/questions/10625104/… 这应该会有所帮助(虽然不是公认的答案,但其他人)。

标签: javascript jquery


【解决方案1】:

根据W3scroll 事件不会冒泡。

由于事件委托依赖于事件冒泡到您已附加处理程序的元素,因此您将无法使用委托。

【讨论】:

    【解决方案2】:

    改用“鼠标滚轮”,
    确保 #contents 在主 html 文件中。

        $("#contents").on('mousewheel',function(e) {
        if(e.originalEvent.wheelDelta /120 > 0) {
             //do something to the loaded elements
         } else {
            //do something to the loaded elements
         }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多