Использование 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');
}
}
Ответы
Ответ 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, особенно с идентификатором - только селектор.