首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery热键触发过快:如何捕捉较慢的按键?

jQuery热键触发过快:如何捕捉较慢的按键?
EN

Stack Overflow用户
提问于 2011-12-30 18:58:55
回答 3查看 1.9K关注 0票数 2

我使用的是jQuery热键插件,代码如下:

代码语言:javascript
复制
$(document).bind('keydown', 'right', function(){
        console.log('fired');
        display_info();
    });

当按下右边的按钮时,display_info();被调用大约3-4次。如何捕捉速度较慢的按键?

谢谢!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-30 19:01:01

尝试keyup而不是keydown,或者构建一个计时器。

这里有一个我敲出的又快又脏的计时器,它应该会让你很好地知道你需要做什么:http://jsfiddle.net/Grimdotdotdot/bnM4T/6/

票数 2
EN

Stack Overflow用户

发布于 2012-02-09 03:55:17

我想添加这一点,以防其他人遇到这个问题。你遇到的问题听起来和我遇到的完全一样。如果我绑定了多个快捷方式事件,则每个事件的执行时间将比文档中快捷方式绑定的总数少一次。我有这样的东西:

代码语言:javascript
复制
$(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');
});

对于每个快捷方式绑定,我都会收到两次警告。我解决这个问题的方法是解除快捷键的绑定,并添加一个方法来处理警报和解除绑定。

代码语言:javascript
复制
$(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允许我只执行每个快捷键的代码一次,同时保留每次按下快捷键时的快捷键功能,并保持我的代码相对干燥。

票数 0
EN

Stack Overflow用户

发布于 2011-12-30 19:15:16

代码语言:javascript
复制
$(document).bind('keydown', 'right', function(){
    window.setTimeout(function()
    {
            console.log('fired');
            display_info();
    }, 1000);//milliseconds
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8678719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档