web-dev-qa-db-fra.com

Utilisation de jQuery pour écouter un événement keydown

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');
  }
}
39
Don P

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.

56
Aidan Ewen

Vous pouvez toujours utiliser .on ()

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

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

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.

1
Plynx