Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击并拖动任何可滚动容器的滚动条时触发全局事件_Javascript_Jquery_Html - Fatal编程技术网

Javascript 单击并拖动任何可滚动容器的滚动条时触发全局事件

Javascript 单击并拖动任何可滚动容器的滚动条时触发全局事件,javascript,jquery,html,Javascript,Jquery,Html,让我清楚地解释一下这个问题,我有许多容器(动态添加),其中有自定义下拉列表。容器设置为溢出:自动 因此,自定义下拉建议隐藏在滚动容器中。为了解决这个问题,我在自定义下拉列表中使用了position:fixed 现在,我能够看到这些建议,并且我正在使用jquery将这些建议缝合到它们各自的下拉列表中。但是现在,当我滚动一个特定的容器时,自定义下拉列表建议正在从该下拉列表中移除 所以,当然,我需要在这些容器的卷轴上再次调用这些缝合函数。现在,我在窗口元素上的mouseweel和DOMMouseScr

让我清楚地解释一下这个问题,我有许多容器(动态添加),其中有自定义下拉列表。容器设置为溢出:自动

因此,自定义下拉建议隐藏在滚动容器中。为了解决这个问题,我在自定义下拉列表中使用了
position:fixed

现在,我能够看到这些建议,并且我正在使用jquery将这些建议缝合到它们各自的下拉列表中。但是现在,当我滚动一个特定的容器时,自定义下拉列表建议正在从该下拉列表中移除

所以,当然,我需要在这些容器的卷轴上再次调用这些缝合函数。现在,我在窗口元素上的
mouseweel
DOMMouseScroll
事件上执行这些操作,每当我滚动容器时,这些事件都会触发

但是现在当我点击滚动条移动它时,事件并没有被触发。因此,我需要一个事件,当我点击any containers滚动条拖动它时会触发它

window.addEventListener('DOMMouseScroll', function () {
    console.log("hello");
});
window.addEventListener('mousewheel', function () {
    console.log("hello");
});


PS:我不想专门向每个容器注册事件。我想在全球范围内引发这些事件。(正如我在上述代码中通过将它们注册到window元素所做的那样)。

您考虑过使用jQuery“scroll”事件吗

如果你这样做

$('.parent').scroll(function() {
   //yourcode
});
在每个div元素上触发:

   $('*').scroll(function() {
       //yourcode
    });
每当您在每个元素内滚动时,上述内容将触发滚动事件

它将在鼠标滚轮滚动和拖动滚动条时触发。

您需要在事件侦听器上添加捕获标志,以便它处理“子”元素。默认情况下,此标志为
false
(此处的文档:)

如果为true,则useCapture表示用户希望启动捕获。在启动捕获之后,指定类型的所有事件将被调度到注册的侦听器,然后再被调度到DOM树中其下的任何EventTarget。通过树向上冒泡的事件不会触发指定使用捕获的侦听器。有关详细说明,请参见DOM级别3事件和JavaScript事件顺序。如果未指定,useCapture默认为false

window.addEventListener('scroll',函数(){
console.log(“你好”);

},对);//我不想触发特定的容器。如我在文章中所示,我希望在拖动网站上任何容器的滚动条时触发事件。这将在类为“parent”的每个元素上触发滚动事件。因此,您可以将选择器更改为覆盖所有事件的选择器。我在上面的代码中添加了另一个示例。我尝试了你的代码,但这不起作用,因为容器是动态添加的。我甚至尝试了
$(document.)。在('scroll','*'
上,它不起作用。
window.addEventListener('scroll', function () {
    console.log("hello");
}, true); // <-- the last argument is the capture argument.