【问题标题】:How to prevent a div element to scroll?如何防止 div 元素滚动?
【发布时间】:2013-04-25 10:36:07
【问题描述】:

我有一个包含 p 元素的 div 元素。 我控制了 div 的滚动位置(设置 scrollTop 属性)和 p 的 onclick 事件。 问题在于,当我单击 p 然后按向下箭头或向上箭头键时,div 在我滚动后会自动滚动。 div 没有焦点,没有设置 onkeydown 或 onkeypress 事件...

这是一个代码示例,您可以在其中应用您的解决方案。在我点击一个 p 之后,我需要阻止 div 在按键事件上滚动(向上和向下箭头)。

<div style="height: 60px; overflow: auto; border: 1px solid black">
<p>Line 1</p>
<p>Line 2</p>
<p>Line 3</p>
<p>Line 4</p>
<p>Line 5</p>
<p>Line 6</p>
</div>

【问题讨论】:

  • 请发布您的代码

标签: javascript html events focus


【解决方案1】:

浏览器会为您滚动。你想要的是在它们到达浏览器之前捕获导致滚动的事件,然后取消它们。

您可以捕获 keydown/keyup/keypress 事件,并在事件处理程序中执行(假设为 jQuery)

$("div p").on("keydown", function(event) {
    event.stopPropagation();
    event.preventDefault();
});

http://api.jquery.com/on

如果您不想使用 jQuery,请在 https://developer.mozilla.org/en-US/docs/DOM/event.preventDefault 处查看原生 preventDefault,它的工作原理类似于

document.getElementById('someId').addEventListener(
    'keyup', function(evt) { evt.preventDefault(); }, false
);

【讨论】:

  • 谢谢,但我不会说 jQuery。
  • 已更新。但是你真的应该使用 jQuery。它会为您省去很多麻烦。
  • 无论如何我认为你的答案不相关。
  • 我将 addEventListener 方法应用于我的 div 以获取 keyup 和 keypress 事件。它没有用。你完美地回答了我的问题,但我没有回答你的问题。
  • @donkeydown:显示您的代码,以便我们了解您的尝试
猜你喜欢
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2021-08-15
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多