要按下按钮(让我们以Esc为例),我目前使用:
$(document).keyup(function(e) { ... });
根据我的理解,这将在用户进行的每次按键操作后运行,如果我的功能背后的逻辑很重,听起来效率不高。
有没有办法只听到所需的密钥?
为了澄清,我正在使用if(e.keyCode == ...) { ... }
语句,但是,如果我有很多听众,即使是一个开关案例陈述也听起来不是很有效。
答案 0 :(得分:2)
不,您无法绑定到特定按键。您只能绑定到按键/按键,然后然后询问它是哪个键。
如果您的功能除了涉及所需的键之外什么都不做的话,这不需要过于昂贵的计算。
答案 1 :(得分:1)
为了澄清,我正在使用if(e.keyCode == ...){...}语句,但是,如果我有很多听众,即使是switch case语句听起来也不是很有效
为避免长切换案例,您可以使用对象键值对。所以,这样的事情会很好:
var obj = { // here `key ---> key-code`, and `value --> functionToCall`
"47" : someFunc,
"48" : someFunc2,
"49" : someFunc3,
.... // you get the idea
};
function someFunc3(){
alert("great!");
}
// testing
obj[49](); // outputs great!
所以,你可以像这样使用这个全局对象:
document.getElementById("myElement").onkeydown = function(e){
if( obj.hasOwnProperty(e.keyCode) )
obj[e]();
else
alert("Not found");
}
最好的是,你可以在任何地方,任何功能中使用它,因为它是全球性的。
希望有所帮助!