Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们如何在jquery中重写keypress事件_Javascript_Jquery - Fatal编程技术网

Javascript 我们如何在jquery中重写keypress事件

Javascript 我们如何在jquery中重写keypress事件,javascript,jquery,Javascript,Jquery,假设我有一个jQuery文件,其中定义了按键操作。在我的aspx页面中,我想覆盖按键操作。 我怎样才能做到这一点呢?想象一下你有这样的场景: $('#item').unbind('keypress'); var handler = function(){ ... } $('body').on('keypress', ':input', handler); 然后,您可以通过以下操作删除该特定处理程序(对其他处理程序没有影响): $('body').off('keypress', ':inpu

假设我有一个
jQuery
文件,其中定义了按键操作。在我的
aspx
页面中,我想覆盖按键操作。
我怎样才能做到这一点呢?

想象一下你有这样的场景:

$('#item').unbind('keypress');
var handler = function(){ ... }

$('body').on('keypress', ':input', handler);
然后,您可以通过以下操作删除该特定处理程序(对其他处理程序没有影响):

$('body').off('keypress', ':input', handler);
要删除所有按键处理程序,只需调用它而不传递处理程序

$('body').off('keypress', ':input');
要从特定元素中删除所有事件处理程序,只需在不带参数的情况下使用它

$(':input').off();
相反,如果您只想阻止默认行为,只需使用
preventDefault
函数即可

$('body').on('keypress', ':input', function(e){

  e.preventDefault();

  ...
});
在这种情况下,您只需使用处理程序一次,jQuery中的
once
函数将绑定处理程序并在执行结束时解除绑定

很抱歉回答得太长,但我不太清楚你的问题


文档

对不起,如果要抑制按键处理程序或事件本身,您能更好地解释一下吗?嗨,Marco,我在jquery文件中有以下代码嗨,Marco,我在jquery文件中有以下代码--$(document).ready(function(){$(document).mapHotKeys([{key:'shift+F2',action:function(){alert('被热键阻止');}}}});这个动作我想在我的页面上重写Hi Marco,我的场景是这样的——我写了一些在所有页面中都很常见的全局按键事件。现在我想用另一个事件重写全局事件中的一个按键事件。假设在键“Ctrl”的全局事件中,我的动作是“Alert('Hi')”;因此,在其中一页中,我想将其改写为“警报('Hello'));我该如何实现这一点?我想您可以遵循我编写的第一个场景,即使用处理程序的场景,然后使用您想要的行为注册一个新的处理程序。现在的问题可能是:如果处理程序位于另一个文件中,您如何获取该处理程序?另一种解决方案可以是重写该文件中的jquery内容,以便根据不同的情况以不同的方式工作您可以在每个页面中定义并访问的参数-也许全局变量是最简单的事情“,确保您可以通过某种方式访问处理程序-在这里,最简单但不是最好的选择可能是在全局命名空间中定义它。否则,一个相当困难的解决方案可能是检查在jQuery中为该事件注册了哪些处理程序,并获取您要查找的处理程序:
$('body').on('keypress', ':input', function(e){

  e.preventDefault();

  ...
});