背景:
我正在编写一个组件,该组件在点击时会打开一个子菜单。我无法知道此组件将放置在页面的哪个位置以及它将被嵌套在可能设置了overflow
属性的区域中有多远。
考虑到溢出可能会裁剪子菜单,因此我将子菜单本身附加到body
上,给它一个绝对位置,并通过代码将其链接到原始组件。这解决了溢出问题。
问题:
但是,如果用户滚动,子菜单将保持不变,而不是随其链接的组件一起移动,因此我需要能够监听页面上发生的任何和所有滚动事件,以便我可以适当地重新定位子菜单。
如果有一种简单的方法来监听所有滚动事件,或者如果有另一种更好的方法来执行此组件,我将感激任何建议。
我已经在JSFiddle上进行了测试,并设置了一个sandbox,但我没有成功,也没有在此网站或其他地方找到答案;尽管可能我使用了错误的搜索术语,但我想象不到我是第一个提出这个问题的人。
编辑
为了解决关闭投票,我不是在提供代码的情况下请求调试问题,也不是在问一个将来对任何人都没有帮助的问题。我正在询问如何监听发生在页面上的某种类型的所有事件,无论它们发生在哪里,我认为这是全球适用的,尽管可能是主观的。
编辑
$(window).on('scroll', function(){ /**/ });
不是一个选项,因为它只监听窗口滚动,而不是任何嵌套滚动。
$('#ex1 #ex2').on('scroll', function(){ /**/ });
不是一个选项,因为它要求实现代码的人意识到可能滚动的当前或可能的未来页面区域。
overflow: scroll
样式的父元素即可。 - Joecapture
参数,您可以在事件监听时传递,并且在所有主要浏览器中都得到支持。 - csuwldcat