在我的網站上,我註冊了整個文檔的按鍵事件處理程序。如何僅爲一個元素禁用JQuery keypress事件?
$(document).keypress(myhandler);
而我處理'空格'鍵滾動列表。
問題是,有一個<input type='text' />
元素,我不希望'space'按鍵在列表中輸入時會滾動列表。
我無法在JQuery傳遞給處理程序的「event」對象中找到任何信息,以確定事件來源的位置。
在我的網站上,我註冊了整個文檔的按鍵事件處理程序。如何僅爲一個元素禁用JQuery keypress事件?
$(document).keypress(myhandler);
而我處理'空格'鍵滾動列表。
問題是,有一個<input type='text' />
元素,我不希望'space'按鍵在列表中輸入時會滾動列表。
我無法在JQuery傳遞給處理程序的「event」對象中找到任何信息,以確定事件來源的位置。
或者,您可以附加其他事件處理程序的輸入字段,並在此處理停止事件的傳播:
jQuery('#input-field-id').bind('keypress', function(e) {
e.stopPropagation();
});
這樣,您可以保持全局事件處理程序不變。可能會更清潔。
您正在尋找event.target.id
,它將成爲事件引發元素的ID。所以裏面myhandler
你需要像下面
function myhandler(e) {
if (e.target.id !== 'id of input') {
/* rest of event handler */
}
}
工程!謝謝! – HRJ 2009-11-10 14:50:16
見怪異模式文檔有關event order,特別是關於如何關閉的事件,這是特定瀏覽器。報價:
對於一個完整的跨瀏覽器的體驗就
function doSomething(e)
{
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
}
絕對清潔。 – HRJ 2009-11-10 14:54:15
而不是'e.stopPropagation();'使用 'e.preventDefault();' – 2015-10-26 12:53:19