2013-02-17 73 views
31

我想要檢測何時按下回車鍵,在js加載後將被注入的HTML。使用jQuery'on()'來查看輸入按鍵

按下回車鍵時,簡單地檢測,我可以這樣做:

$('#textfield').keydown(function (e){ 
    if(e.keyCode == 13){ 
     console.log('Enter was pressed'); 
    } 
}) 

此代碼對(),但我擔心這是低效的,因爲jQuery將檢查每一個鍵被按下時。有沒有什麼效率低下?

$('body').on('keydown','#textfield', function(event) { 
    if (event.keyCode == 13) { 
    console.log('Enter was pressed'); 
    } 
} 
+4

號字面上數以千計的事情發生時,按下一個鍵,它會像在大海中的一滴水。 – JJJ 2013-02-17 08:59:43

+0

就緒事件調用腳本 – EnterJQ 2013-02-17 09:02:34

回答

45

如果你想隨時隨地捕捉頁面上的按鍵 -

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

不要擔心其實這檢查每一個按鍵,真的是不把對瀏覽器的任何顯著負荷。

1

實際上,你不用擔心什麼。瀏覽器已經冒泡了該事件,即使它可能被body困住並從委託事件中運行選擇器,但這並不是對JQuery執行的深入或困難的實際檢查,尤其是對於僅使用ID選擇。

+0

同意。順便說一句:你真的沒有選擇 - 沒有辦法添加一個監聽器的關鍵(雖然它會很好)。 – 2013-02-17 09:03:23

+0

...即使有一種方法可以將偵聽器添加到單個按鍵,但內部瀏覽器仍然必須對每個按鍵作出反應,以確定哪個按鍵被按下。 – JJJ 2013-02-17 09:20:10

8

你仍然可以使用。對()

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

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

你是一個拯救生命的人:) – 2015-04-11 09:11:11