Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 - Fatal编程技术网

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

Javascript 如何避免特定元素滚动被禁用?,javascript,jquery,Javascript,Jquery,在ipad pro上,我试图在弹出窗口打开时禁用滚动,在弹出窗口关闭时启用向后滚动。 我已经找到了一个完美的解决方案,但它也阻止了内部元素的滚动 function preventDefault(e){ e.preventDefault(); } function disableScroll() { document.body.addEventListener('touchmove', preventDefault, { passive: false }); } function enab

在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();
    }
},

现在已经解决了。

您可以发布答案并接受自己的答案,而不是为问题添加解决方案(矛盾修饰法)。