Подтвердить что ты не робот

Использование jQuery для прослушивания события нажатия клавиш

Я хочу определить, когда нажата клавиша ввода, в 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');
  }
}
4b9b3361

Ответ 1

Если вы хотите захватить нажатие клавиши в любом месте страницы -

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

Не беспокойтесь о том, что это проверяет каждый нажатие клавиши, это действительно не создает значительную нагрузку на браузер.

Ответ 2

Вы все еще можете использовать .on()

$(document).off('keyup#textfield');

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

Ответ 3

С практической точки зрения, вам не о чем беспокоиться. Браузер уже собирается пузыряться в этом событии, и хотя он может быть захвачен body и запускать селектор из делегированного события, это не является серьезной или трудной практической проверкой для выполнения JQuery, особенно с идентификатором - только селектор.