如何使用jquery监听特定按钮

时间:2014-03-16 13:38:32

标签: javascript jquery performance keylistener

要按下按钮(让我们以Esc为例),我目前使用:

$(document).keyup(function(e) { ... });

根据我的理解,这将在用户进行的每次按键操作后运行,如果我的功能背后的逻辑很重,听起来效率不高。

有没有办法只听到所需的密钥?

为了澄清,我正在使用if(e.keyCode == ...) { ... }语句,但是,如果我有很多听众,即使是一个开关案例陈述也听起来不是很有效。

2 个答案:

答案 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");
}

最好的是,你可以在任何地方,任何功能中使用它,因为它是全球性的。

希望有所帮助!