我正在尝试覆盖核心jQuery事件,在这种情况下是keydown
事件。我的目的是preventDefault()
,Left(37)
,Up(38)
和Right(39)
的{{1}}功能,以维护我的网络应用程序中热键的一致性。
我使用here提供的解决方案来处理条件charCode preventDefault问题。
由于某种原因,我的函数覆盖根本就没有触发,我无法解决问题。我担心在过去30分钟内这个问题导致一些脱发。有人有补救措施吗?
Down(40)
答案 0 :(得分:1)
您的解决方案存在的问题是keydown
不接受事件作为参数,因此您所发生情况的心理模型不正确。如何创建事件可能很复杂,那么为什么不编写一个使用keydown
并在其上构建的插件,在给定的回调之前插入逻辑:
(function($){
var charCodes = new Array(37,38,39,40);
$.fn.limitedkeydown = function(callback) {
this.keydown(function(e) {
if ($.inArray(e.keyCode, charCodes))
e.preventDefault();
callback(e);
});
};
})(jQuery);
这样原始(未触动)版本仍可供您使用,因此同样可以使用这两种方法:
$('selector').keydown(function(e) {});
$('selector').limitedkeydown(function(e) {});