【问题标题】:jQuery hotkeys triggering too fast: How to catch keypresses slower?jQuery 热键触发太快:如何更慢地捕捉按键?
【发布时间】:2012-01-30 12:17:55
【问题描述】:

我正在使用带有以下代码的 jQuery 热键插件:

$(document).bind('keydown', 'right', function(){
        console.log('fired');
        display_info();
    });

当按下右键时,display_info();被调用大约 3-4 次。如何更慢地捕捉按键?

谢谢!!

【问题讨论】:

    标签: jquery keypress keydown hotkeys


    【解决方案1】:

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

    这是我敲出的一个快速而肮脏的计时器,它应该能让你很好地了解你需要做什么:http://jsfiddle.net/Grimdotdotdot/bnM4T/6/

    【讨论】:

    • 试过keyup - 仍然触发太快。关于如何构建计时器的任何建议?还是 JavaScript 新手!谢谢
    【解决方案2】:

    我想添加它以防其他人遇到此问题。 你遇到的问题听起来和我遇到的一模一样。 如果我绑定了多个快捷方式事件,那么每个快捷方式事件的执行时间将比文档中快捷方式绑定的总数少一倍。我有这样的事情:

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

    【讨论】:

      【解决方案3】:
      $(document).bind('keydown', 'right', function(){
          window.setTimeout(function()
          {
                  console.log('fired');
                  display_info();
          }, 1000);//milliseconds
      });
      

      【讨论】:

      • 不会只是拨打相同数量的电话,但要晚一秒钟吗?
      猜你喜欢
      • 2011-07-12
      • 2012-09-21
      • 2011-03-03
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 2017-02-24
      • 2014-01-01
      • 1970-01-01
      相关资源
      最近更新 更多