如何只为一个元素禁用JQuery keypress事件?

HRJ*_*HRJ 14 html javascript jquery event-handling

在我的网站上,我已经为整个文档注册了一个按键事件处理程序.

$(document).keypress(myhandler);
Run Code Online (Sandbox Code Playgroud)

我处理'空格'键来滚动列表.

麻烦的是,有一个<input type='text' />元素,我不希望'space'按键在输入中输入时滚动列表.

我在JQuery传递给处理程序的"event"对象中找不到任何信息,以识别事件源的位置.

Tom*_*tel 20

或者,您可以将另一个事件处理程序附加到输入字段,并在此处理程序中停止事件的传播:

jQuery('#input-field-id').bind('keypress', function(e) {
    e.stopPropagation(); 
});
Run Code Online (Sandbox Code Playgroud)

这样,您可以保留全局事件处理程序.可能更清洁.

  • 而不是`e.stopPropagation();`使用`e.preventDefault();` (2认同)