42

動的に挿入される HTML で、Enter キーが押されたことを検出したいと考えています。

Enter キーが押されたことを簡単に検出するには、次のようにします。

$('#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');
  }
}
4

3 に答える 3

61

ページ上の任意の場所でキープレスをキャプチャしたい場合 -

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

これがすべてのキープレスをチェックするという事実について心配する必要はありません。実際には、ブラウザーに大きな負荷をかけることはありません。

于 2013-02-17T09:02:49.377 に答える
10

まだ .on() を使用できます

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

$(document).on('keyup#textfield', function(event) {
    if (event.keyCode == 13) {
         console.log('Enter was pressed');
    }
});
于 2014-12-08T16:03:37.203 に答える
1

実際には、心配する必要はありません。ブラウザーはすでにそのイベントをバブリングします。これは、によってトラップされbody、委任されたイベントからセレクターを実行する可能性がありますが、これは、特にIDのみのセレクターを使用する場合、JQueryが実行するための深くて難しい実用的なチェックではありません。 。

于 2013-02-17T08:59:04.077 に答える