如何使用 jQuery 禁用主体滚动,但不禁用子元素?

问题描述 投票:0回答:2

当我有弹出 div (例如照片库查看器等)时,我想禁用正文滚动,但是我不希望为子元素禁用滚动。

我现在正在使用这个,它会禁用所有卷轴:

$('body').bind('mousewheel DOMMouseScroll', function(e) {
    var scrollTo = null;

    if (e.type == 'mousewheel') {
        scrollTo = (e.originalEvent.wheelDelta * -1);
    }
    else if (e.type == 'DOMMouseScroll') {
        scrollTo = 40 * e.originalEvent.detail;
    }

    if (scrollTo) {
        e.preventDefault();
        $(this).scrollTop(scrollTo + $(this).scrollTop());
    }
});

那么如果我有一个名为“popup”的元素类,我怎么能接受呢?或者更好的是,我怎样才能阻止事件影响除 body 标签之外的任何内容?

jquery scroll parent-child
2个回答
0
投票

你可以看看这个页面

如何使用 jQuery 以编程方式禁用页面滚动

我相信这个人想要同样的行为,我有一种感觉 Y 滚动条可能会消失,但也许你可以想办法解决它或者只是总是显示它


0
投票

尝试将其添加到您的子元素

onmouseover="document.body.style.overflow='hidden';" 
onmouseout="document.body.style.overflow='auto';"

它将使主体滚动条消失,直到子元素上的鼠标移出,但否则具有所需的效果。

© www.soinside.com 2019 - 2024. All rights reserved.