我需要在按下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中尝试了我当前的代码,它运行正常,所以它必须更具体。
答案 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按键。