使用jQuery监听keydown事件



我想在将动态注入的HTML上检测何时按下回车键。

要简单地检测何时按下回车键,我可以做:

$('#textfield').keydown(function (e){
    if(e.keyCode == 13){
        console.log('Enter was pressed');
    }
})

这段代码适用于on(),但我担心它效率低下,因为每次按下键时jQuery都会进行检查。这有什么低效的地方吗?

$('body').on('keydown','#textfield', function(event) {
  if (event.keyCode == 13) {
    console.log('Enter was pressed');
  }
}

如果您想在页面上的任何位置捕获按键-

$(document).keypress(function(e) {
  if(e.which == 13) {
    // enter pressed
  }
});

不用担心这会检查每一次按键,它确实不会给浏览器带来任何重大负载。

您仍然可以使用.on()

$(document).off('keyup#textfield');
$(document).on('keyup#textfield', function(event) {
    if (event.keyCode == 13) {
         console.log('Enter was pressed');
    }
});

在实际应用中,无需担心。浏览器已经在冒泡该事件,即使它可能被body捕获并从委托事件中运行选择器,这对JQuery来说并不是一个深入或困难的实际检查,尤其是对于仅ID的选择器。

最新更新