子元素及其父元素的鼠标滚轮处理程序

Mousewheel handler for child element and his parent

我制作了一个 jQuery 插件,用我自己的替换默认滚动条并处理鼠标滚轮和拖动条事件。

当我将带有滚动条的内容放入另一个带有滚动条的内容时,如果我在子内容上使用鼠标滚轮,父内容也会滚动。

这是因为我将鼠标滚轮事件侦听器绑定到子内容和父内容,当我将鼠标悬停在它们上面时,它会触发两个事件处理程序。

问题是我只需要轮子内容而不影响父内容。

你有什么解决办法吗?拖动滚动条事件正常。

您需要停止传播事件。这将阻止事件在 DOM 树中冒泡并在父元素上触发。

http://jsbin.com/yelijelowa/1/edit?js,output

$('body').on('mousewheel', function (e) {
  alert('Body scroll');
});

$('.child').on('mousewheel', function (e) {
  e.stopPropagation();

  alert('Child scroll only');
});

如果注释掉 e.stopPropagation(); 行,您会注意到两个警报都会触发。

文档: