javascript - 使用键盘箭头禁用元素滚动

标签 javascript jquery html angular

Fiddle

所以我试图在另一个 div 可见时禁用 div 的滚动。

下面我使用的代码就是这样做的,但只有在使用鼠标滚轮滚动时才这样做。

如果我单击滚动条并拖动它,或者如果我聚焦 div 并使用键盘向下按钮,滚动仍然会发生。

为什么会这样,我该如何解决我的问题(可能不需要在我的滚动条上覆盖透明元素或类似的“hacks”)?

$('#element').on('scroll mousewheel keydown keypress keyup', function (event) {
    const element = $(event.currentTarget);
    const shouldScroll = false;

    if (!shouldScroll) {
        event.preventDefault();
        event.stopPropagation();
        return false;   
    }
});

最佳答案

你为什么不这样做呢?

var scrollEnabled = true;
var scrollX = 0;
var scrollY = 0;

$(document).ready(function() {

  $('div.outer').on('scroll', function(event) {
    if (!scrollEnabled) this.scrollTo(scrollX, scrollY);
  });
  
  $('#tglBtn').on('click', function(event) {
    if (scrollEnabled == true) {
      scrollEnabled = false;
      scrollX = $('div.outer').scrollLeft();
      scrollY = $('div.outer').scrollTop();
    } else {
      scrollEnabled = true;
    }
  });
  
});
div.outer {
  height: 500px;
  width: 500px;
  background-color: red;
  overflow-y: scroll;
}

div.inner {
  height: 200px;
  width: 500px;
}

div.inner:nth-child(odd) {
  background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="tglBtn" value="Enable/Disable scrolling" />
<div class="outer">
  <div class="inner">

  </div>
  <div class="inner">

  </div>
  <div class="inner">

  </div>
  <div class="inner">

  </div>
  <div class="inner">

  </div>
  <div class="inner">

  </div>
</div>

关于javascript - 使用键盘箭头禁用元素滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48708265/

相关文章:

javascript - 如何让下拉菜单选项显示值的串联

javascript - 根据用户输入弹出模态

javascript - 防止函数在从 ajax 再次调用后多次运行

JavaScript 输入类型日期 |不适用于 Android 设备 4.2

javascript - 如何反复使用 onclick() & if 语句更改图像?

JavaScript 错误 : Invalid Token when using ReCaptcha API

javascript - CSS :hover not working after jquery load();

html - "br"标签显示在我网站的文字中?

javascript - 将某些 observableArray 对象属性转换为 observable

javascript - 如何绕过动态 anchor 标记中的特殊字符