JQuery,通过语句检查是否按了箭头键
我已经设置了一个按键功能,我想根据是否按下左、右、上或下箭头键来做不同的事情。这是使用switch语句实现的,但我也希望在按下任何箭头键时执行一些操作,但无法理解。我的代码:JQuery,通过语句检查是否按了箭头键,jquery,switch-statement,arrow-keys,Jquery,Switch Statement,Arrow Keys,我已经设置了一个按键功能,我想根据是否按下左、右、上或下箭头键来做不同的事情。这是使用switch语句实现的,但我也希望在按下任何箭头键时执行一些操作,但无法理解。我的代码: $(document).keydown(function (e) { var keyCode = e.keyCode || e.which, arrow = {left: 37, up: 38, right: 39, down: 40 }, switch (keyCode) { case arrow.
$(document).keydown(function (e) {
var keyCode = e.keyCode || e.which,
arrow = {left: 37, up: 38, right: 39, down: 40 },
switch (keyCode) {
case arrow.left:
// do something left
break;
case arrow.right:
// do something right
break;
}
});
我真的很想要一行代码,在这里我可以检查是否按下了任何箭头键,但无法找出它,例如:
case arrow:
// do something for any arrow keys
break;
仅使用“case arrow”似乎不起作用。有人能帮忙吗
提前谢谢
编辑:谢谢大家的帮助。这是我的最终代码,供大家参考:
$(document).keydown(function (e) {
if (e.which >= 37 && e.which <= 40) {
$('p.key-notification').fadeOut('slow');
}
var keyCode = e.keyCode || e.which,
arrow = {left: 37, up: 38, right: 39, down: 40 },
switch (keyCode) {
case arrow.left:
// do something left
break;
case arrow.right:
// do something right
break;
}
});
$(文档).keydown(函数(e){
如果(e.which>=37&&e.which为什么也必须在您的开关语句中
在切换后,单独声明if
:
if (keyCode >= 37 && keyCode <= 40) {
// run your code here
}
if(keyCode>=37&&keyCode单个switch
语句无法在多个条件下匹配-您可能会失败,但这不会对后续情况下的表达式求值,也不会达到预期效果。我会这样做:
if (keyCode >= 37 && keyCode <= 40) {
// do any processing for _any_ arrow key here if it should happen
// before individual arrow key processing
switch (keyCode) {
case arrow.left:
// do something left
break;
case arrow.right:
// do something right
break;
}
// do any processing for _any_ arrow key here if it should happen
// after individual key processing
}
if (keyCode === arrow.left || keyCode === arrow.right
|| keyCode === arrow.up || keyCode === arrow.down) {
如果我理解正确的话,这应该适合你的需要
增加可读性的另一种方法
var arrow = { left: 37, up: 38, right: 39, down: 40 };
其中任何一个
switch (evt.keyCode) {
case arrow.right:
case arrow.left:
case arrow.up:
case arrow.down:
// Do something
break;
}
其中一个
switch (evt.keyCode) {
case arrow.right:
// Do right
break;
case arrow.left:
// Do left
break;
case arrow.up:
// Do up
break;
case arrow.down:
// Do down
break;
}
case-arrow.left:case-arrow.right:case-arrow.up:case-arrow.down://do something for arrows break;
这可能永远不会执行,或者总是执行,而不是switch
语句中的每个特定arrows代码块。为此,我使用了这个,尽管我不得不使用“e”检查按下了哪个键,因为“keyCode”没有返回任何值,不知道确切的原因是什么?谢谢你的回答,这也让它非常简洁!