我使用的是jQuery热键插件,代码如下:
$(document).bind('keydown', 'right', function(){
console.log('fired');
display_info();
});当按下右边的按钮时,display_info();被调用大约3-4次。如何捕捉速度较慢的按键?
谢谢!!
发布于 2011-12-30 19:01:01
尝试keyup而不是keydown,或者构建一个计时器。
这里有一个我敲出的又快又脏的计时器,它应该会让你很好地知道你需要做什么:http://jsfiddle.net/Grimdotdotdot/bnM4T/6/
发布于 2012-02-09 03:55:17
我想添加这一点,以防其他人遇到这个问题。你遇到的问题听起来和我遇到的完全一样。如果我绑定了多个快捷方式事件,则每个事件的执行时间将比文档中快捷方式绑定的总数少一次。我有这样的东西:
$(document).bind('keydown', 'alt+a', function () {
alert('A Pressed');
});
$(document).bind('keydown', 'alt+b', function () {
alert('B Pressed');
});
$(document).bind('keydown', 'alt+c', function () {
alert('C Pressed');
});对于每个快捷方式绑定,我都会收到两次警告。我解决这个问题的方法是解除快捷键的绑定,并添加一个方法来处理警报和解除绑定。
$(document).ready(function () {
$(document).bind('keydown.alt+a', 'alt+a', function () {
alertAndUnbind('A', 'alt+a');
});
$(document).bind('keydown.alt+b', 'alt+b', function () {
alertAndUnbind('B', 'alt+b');
});
$(document).bind('keydown.alt+c', 'alt+c', function () {
alertAndUnbind('C', 'alt+c');
});
});
function alertAndUnbind(letter, shortcut) {
alert(letter);
$(document).unbind('keydown.' + shortcut, shortcut);
});以这种方式使用unbind允许我只执行每个快捷键的代码一次,同时保留每次按下快捷键时的快捷键功能,并保持我的代码相对干燥。
发布于 2011-12-30 19:15:16
$(document).bind('keydown', 'right', function(){
window.setTimeout(function()
{
console.log('fired');
display_info();
}, 1000);//milliseconds
});https://stackoverflow.com/questions/8678719
复制相似问题