【问题标题】:Can't trigger a jquery function with scroll on a particular div无法在特定 div 上滚动触发 jquery 函数
【发布时间】:2015-10-06 00:42:34
【问题描述】:

短版:可行

$(document).on("click",".Container",function(){})

这不是:

$(document).on("scroll",".Container",function(){})

长版: 很抱歉,发布代码 sn-p 是不可行的,因为它是一个类似于应用程序的复杂界面,但我会尽我所能解释这个问题:

  • 根据屏幕空间加载不同界面的移动响应式网站。
  • 最小的界面由 3 部分组成 - 顶部导航、底部搜索和中间内容。
  • 内容主要是在使用期间加载,而不是在页面加载时加载。
  • 我需要在内容滚动时触发一个函数,无论是上下滚动还是动态滚动,而不仅仅是超过某个点。
  • 我仍然可以滚动,只是没有作为事件触发。
  • 我已经尝试了所有我发现无济于事的方法,根据我的短暂经验和我一直在阅读的内容,我认为这可能与滚动不会像点击一样冒泡有关,但我有不知道我应该做什么或尝试使用这些信息。
  • 虽然它似乎不会影响我的问题(删除它并不能解决问题),但我应该透露我正在使用hammer.js 来模拟触摸事件,因为它可能会影响解决方案。

提前感谢所有帮助。

除此之外,我将使用无效的建议进行编辑--

【问题讨论】:

  • 希望此链接对您有所帮助:stackoverflow.com/questions/21561480/…
  • 如果不需要支持 IE8,也可以捕获滚动事件
  • 在这里查看@A.Wolff 的答案stackoverflow.com/questions/9253904/…
  • @PradeepSekar 我在另一个页面上使用过类似的东西,但问题是适用于窗口滚动而不是在特定 div 中滚动,我可能可以让它工作,但我我确实有 2 个可滚动的 div 会搞砸,所以如果有的话,我需要一个通用的解决方案。
  • @A.Wolff 评论似乎已经完成了这项工作。现在它触发了。还要感谢 M.Doye。

标签: javascript jquery html scroll


【解决方案1】:

我认为这是因为滚动事件没有冒泡,并且您将侦听器添加为委托,您应该直接添加它:

$('.Container').on('scroll',function(){});

有关此的更多信息: https://api.jquery.com/on/

【讨论】:

  • 绝望中我也试过了,但我认为它不起作用,因为内容是在页面加载后加载的。
【解决方案2】:

在@A 的帮助下。 Wolf 和@M.Doye 我发现了一些有用的东西。虽然它至少不能帮助理解问题所在。

document.addEventListener('scroll',function(event){
    if(event.target.className==='Container'){
        insert magic spell here
    }
},true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多