jQuery键盘快捷键插件unbind在我的演示中不工作,但没有显示任何错误

jQuery Keyboard shortcut plugin unbind does not work in my demo but does not show any errors

本文关键字:工作 错误 任何 显示 插件 快捷键 键盘 unbind 我的 jQuery      更新时间:2023-09-26

我正在尝试使用这个jQuery键盘快捷键插件 https://github.com/jeresig/jquery.hotkeys在我的JavaScript应用程序。

我遇到一个问题,绑定方法使事件侦听器开始侦听我的按键工作,但是unBind方法似乎不工作。

下面是一个例子:http://jsfiddle.net/80k2uf3w/13/

// Enable our keyboard shortcut for the "number 1 key"
function bindOneKey(){
    alert("keyboard Event listener is now listening for key number 1 to be pressed!");
    jQuery(document).bind('keydown', '1',function (evt){
        alert("keyboard key number 1 was pressed");
        return false;
    });
}
// Disable our keyboard shortcut for the "number 1 key"
function unBindOneKey(){
    jQuery(document).unbind('keydown', '1');
    alert("keyboard Event listener for key number 1 has been killed!");
}
// Demo buttons to enable/disable our Keyboard shortcut Event listeners
$(document).ready(function(){
    $('#bindOne').bind('click', bindOneKey);
    $('#unBindOne').bind('click', unBindOneKey);
}

HTML button for Demo

<input type="button" id="bindOne" value="Bind 1 keyboard key" />
<input type="button" id="unBindOne" value="unBind 1 keyboard key" />

在该演示页面上,按下bind 1按钮后,您可以按键盘上的数字1键,并从回调函数获得警报。

之后,如果你按下unbind 1按钮,然后按下1 key再次,它仍然工作,而不是解除绑定它!

有人知道问题是什么吗?

这只是展示功能和问题的最基本的演示。我真正的应用程序基本上会启用快捷键时,一个模式是打开,然后禁用/取消绑定时,模式是关闭。这就是为什么我需要让它工作起来。

我的另一个选择是找到一个新的键盘快捷键库,似乎有大约50个,但我喜欢这个,因为它看起来非常轻量级,也是由一个非常知名的JavaScript开发人员构建的。所以我在这里发帖,看看我们是否能先让这个工作100%。

有一件事要注意的是,在GItHub页面上的库,似乎测试文件使用的是jQuery v1.4.x旧版本,也许这可能是问题的一部分,但我不确定,因为大多数库工作,我也没有控制台错误!

感谢您的帮助

我发现了一个类似的问题,其他人试图做同样的事情启用和禁用键盘快捷键作为一个模式打开和关闭使用这个库在这个问题jQuery热键-解除绑定?

似乎没有任何完美的解决方案,所以我可能会看看其他库,或者可能只是手动编写我需要的jQuery快捷键,而没有库。