Je veux détecter quand on appuie sur la touche Entrée, sur HTML qui sera injecté dynamiquement.
Pour détecter simplement quand la touche entrée est enfoncée, je peux faire:
$('#textfield').keydown(function (e){
if(e.keyCode == 13){
console.log('Enter was pressed');
}
})
Ce code fonctionne pour on()
, mais je crains qu'il ne soit inefficace car jQuery vérifiera chaque fois qu'une touche est enfoncée. Y at-il quelque chose d'inefficace à ce sujet?
$('body').on('keydown','#textfield', function(event) {
if (event.keyCode == 13) {
console.log('Enter was pressed');
}
}
Si vous voulez capturer la touche n'importe où sur la page -
$(document).keypress(function(e) {
if(e.which == 13) {
// enter pressed
}
});
Ne vous inquiétez pas du fait que cela vérifie chaque pression sur une touche, cela ne représente aucune charge importante pour le navigateur.
Vous pouvez toujours utiliser .on ()
$(document).off('keyup#textfield');
$(document).on('keyup#textfield', function(event) {
if (event.keyCode == 13) {
console.log('Enter was pressed');
}
});
Concrètement, rien ne vous préoccupe. Le navigateur va déjà faire bouillonner cet événement, et même s'il peut être bloqué par le body
et exécuter un sélecteur à partir de l'événement délégué, ce n'est pas une vérification pratique approfondie ou difficile à effectuer par JQuery, en particulier avec un sélecteur d'identification uniquement.