微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery热键……不那么全球化

基本上,我正在使用Resig先生的 jQuery Hotkeys plugin来捕获和处理像ctrl o等的快捷方式……

好吧,也许我不理解这个概念,但我的印象是,文档内部任何地方触发的控件都会被文档热键处理程序捕获.

例如,以下代码一般工作…

jQuery(document).bind('keydown','ctrl+o',fn);

但是,如果用户在输入框内触发热键,则会失败.

它只适用于我执行以下操作:

jQuery('body,input').bind('keydown',fn);

这对我的健康非常不利,因为它涉及每次在DOM中添加新输入框时绑定该死的处理程序.更糟糕的是,在CodeMirror等复杂小部件的情况下,我不知道要绑定什么.

Dunno,如果我的问题有道理,也许我使用了错误方法?我也尝试绑定到以下对象,但它不起作用:窗口,文档,正文,div [包含整个页面]

NB:你可以try it out here.

解决方法

这实际上是插件的预期功能
// Don't fire in text-accepting inputs that we didn't directly bind to
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
    event.target.type === "text") ) {
    return;
}

原文地址:https://www.jb51.cc/jquery/178083.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐