抓住“Page Up' Page?'关键事件

时间:2015-11-16 16:09:42

标签: javascript jquery events

我需要在按下PageUp / PageDown键并滚动元素时捕获,但到目前为止我还是无法这样做。我试过了

倾听' keydown'事件**:当非滚动元素处于焦点时触发事件,但当滚动元素处于焦点时,没有事件触发

 $(window).on('keydown', function(e)
 {
    console.log(e.keyCode === 34);
 });

聆听'按键'事件**:在任何情况下都不会触发事件

$(window).on('keypress', function(e)
{
    console.log("keypress"); //does nothing
});

倾听'滚动'事件**:在任何情况下都不会触发事件

$(window).scroll(function()
{
    console.log("scrolling"); //does nothing
});

我不知所措,我无法找到任何线索。 我已经在jsFiddle中尝试了我当前的代码,它运行正常,所以它必须更具体。

4 个答案:

答案 0 :(得分:3)

而不是窗口尝试使用文档,因此它将考虑网页上的当前文档。

你的代码中有

支架未命中匹配。

 $(document).ready(function(){
     $(document).keypress(function(e){
      if(e.keyCode === 34){
         console.log('page down')
        }

    });
 

    $(document).keypress(function(e){
       console.log("keypress"); //console will print
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

希望这对你有用。

答案 1 :(得分:0)

你也可以试试吗?

$(window).bind('keydown', function(event) {
  console.log(event.which === 33) });

event.which属性返回为事件按下了哪个键盘键或鼠标按钮

答案 2 :(得分:0)

实际上你的语法不正确你错过了函数末尾的结束),你应该写:

$(window).on('keydown', function(e) {
  console.log(e.keyCode === 34);
});

$(window).on('keypress', function(e) {
  console.log("keypress"); //does nothing
});

$(window).scroll(function() {
  console.log("scrolling"); //does nothing
});
#scroll {
  max-height: 100px;
  height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="scroll">

  <br>fghfjkjgfj
  <br/>dfdfdfdf
  <br/>dfdsf
  <br/>
  <br/>
  <br/>dfdfdf
  <br/>
  <br/>
  <br/>ssdsds
  <br/>fdf
  <br/>
  <br/>
  <br/>
  <br/>fgfgfg
  <br/>End
</div>

一切都将按预期发挥作用。

答案 3 :(得分:0)

所以我试图滚动的元素是一个SlickGrid表,它有自己的滚动事件。

所以我根据他们的文档写道:

this.grid.onScroll.subscribe(function(e, args)
{
    console.log(e);
}

现在它正在触发Page Down / Page Up按键。