如何避免特定元素滚动被禁用



在ipad pro上,我试图在弹出窗口打开时禁用滚动,在弹出窗口关闭时启用向后滚动。我找到了一个完美的解决方案,但它也阻止了内部元素滚动。

function preventDefault(e){
e.preventDefault();
}
function disableScroll() {
document.body.addEventListener('touchmove', preventDefault, { passive: false });
}
function enableScroll() {
document.body.removeEventListener('touchmove', preventDefault);
}

在这里,我在弹出窗口中有一个元素,它是可滚动的,并且具有类名窗口内容。上面的解决方案阻止了整个页面的滚动,这意味着它也阻止了弹出窗口内部内容的滚动。我试过在下面的代码中允许在pop中滚动,但没有成功。

function disableScroll() {
document.body.addEventListener('touchmove', preventDefault, { passive: false });
document.getElementsByClassName('window')[0].getElementsByClassName('window-content')[0].removeEventListener('touchmove', preventDefault);
}

我想允许在弹出窗口内滚动,它应该只对身体禁用。非常感谢。

我已经更改了preventDefault函数以避免使用特定元素。

preventDefault: function(e) {
if($(e.target).closest(".k-window").length == 0) {
e.preventDefault();
}
},

现在已经修复。

最新更新