编程语言
首页 > 编程语言> > javascript – 当内部元素滚动位置到达顶部/底部时,阻止滚动父元素?

javascript – 当内部元素滚动位置到达顶部/底部时,阻止滚动父元素?

作者:互联网

参见英文答案 > prevent Scroll bubbling from element to window                                    14个
我有一个小“浮动工具箱” – 一个位置固定的div;溢出:汽车.
工作得很好.

但是当在该框内滚动(使用鼠标滚轮)并到达底部或顶部时,父元素“接管”“滚动请求”:工具框后面的文档滚动.
– 哪个很烦人而不是用户“要求”.

我正在使用jQuery并认为我可以使用event.stoppropagation()来阻止此行为:
$(“#toolBox”).scroll(function(event){event.stoppropagation()});

它确实进入了函数,但仍然无论如何传播(文档滚动)
– 在SO(和Google)上搜索这个主题非常困难,所以我不得不问:
如何防止滚动事件的传播/冒泡?

编辑:
工作解决方案多亏了amustill(以及Brandon Aaron的鼠标插件:
https://github.com/brandonaaron/jquery-mousewheel/raw/master/jquery.mousewheel.js

$(".ToolPage").bind('mousewheel', function(e, d)  
    var t = $(this);
    if (d > 0 && t.scrollTop() === 0) {
        e.preventDefault();
    }
    else {
        if (d < 0 && (t.scrollTop() == t.get(0).scrollHeight - t.innerHeight())) {
            e.preventDefault();
        }
    }
});

解决方法:

使用Brandon Aaron的Mousewheel plugin是可能的.

这是一个演示:http://jsbin.com/jivutakama/edit?html,js,output

标签:event-bubbling,event-propagation,javascript,jquery,scroll
来源: https://codeday.me/bug/20190911/1804506.html