如何禁用jQuery中的重复keydown

当用户按下某个键时,我希望keydown()事件只被调用一次,但是在用户停止按键之前调用它。

这是我想要做的:

$(document).keydown(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '39'){ $("#box").animate({"left": "+=30px"}, "fast"); } }); 

因此,当用户按下右箭头键时,我希望div#框向右移动30px。 它会移动,但如果用户按下键,它就会飞走。

我需要它每次按下仅移动30px,并停止,即使用户按下按键。 你知道怎么做到的吗?

跟踪哪些键已关闭,并忽略键码39,直到键盘清除它:

 var down = {}; $(document).keydown(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '39'){ if (down['39'] == null) { // first press $("#box").animate({"left": "+=30px"}, "fast"); down['39'] = true; // record that the key's down } } }); $(document).keyup(function(event) { var keycode = (event.keyCode ? event.keyCode : event.which); down[keycode] = null; }); 

保持一面旗帜并在keydown将其变为绿色,但我建议使用keyup

 $(document).keydown(function(event){ $flag=false; var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '39'){ if(!$flag){ $flag=true; $("#box").animate({"left": "+=30px"}, "fast"); } } });