让我清楚地解释问题,我有很多容器(动态添加),其中有自定义下拉菜单。容器已放置overflow: auto
。
因此,自定义下拉建议被隐藏在该滚动容器内。为了解决这个问题,我使用position: fixed
了自定义下拉菜单。
现在,我能够看到建议,并且正在使用jquery将这些建议缝合到各自的下拉列表中。但是现在,当我滚动特定的容器时,自定义下拉菜单建议已从该下拉列表中删除。
因此,当然,我需要在那些容器的滚动上再次调用那些绣花功能。好吧,我现在正在执行它们,mousewheel
并且DOMMouseScroll
Window元素上的事件每当我滚动容器时都会触发。
但是现在,当我单击滚动条以移动它时,该事件没有触发。因此,我需要一个事件,该事件在单击任何容器滚动条以将其拖动时触发。
window.addEventListener('DOMMouseScroll', function () {
console.log("hello");
});
window.addEventListener('mousewheel', function () {
console.log("hello");
});
PS:我不想为每个容器专门注册事件。我想在全球范围内触发这些事件。(就像我在上面的代码中通过将它们注册到window元素所做的那样)。
您需要在事件侦听器上添加捕获标志,以使其在“子”元素上起作用。默认情况下,此标志为false
(此处的文档:https : //developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)
如果为true,useCapture指示用户希望启动捕获。启动捕获后,所有指定类型的事件都将分派给已注册的侦听器,然后才分派给DOM树中其下的任何EventTarget。在树中冒泡的事件不会触发指定使用捕获的侦听器。有关详细说明,请参见DOM 3级事件和JavaScript事件顺序。如果未指定,则useCapture默认为false。
window.addEventListener('scroll', function () {
console.log("hello");
}, true); // <-- the last argument is the capture argument.
这是您的演示已更改:http : //jsfiddle.net/rlemon/dq5h4kor/8/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句