2017-03-09 105 views
0

試圖捕獲Bootstrap Tab Panel菜單上的按鍵,但它只是冒起來忽略放在標籤的keydown處理程序上的preventDefault()。keydown上的event.preventDefault()不起作用

document.onkeydown = function(e) { 
    console.log("document catched the keydown event"); 

}; 

$('body > div > ul > li > a').on("keydown",function (e) { 
    console.log("handled by the child - stop bubbling please"); 
    e.preventDefault(); 

}); 

例子: http://www.bootply.com/xUlN0dLRaV

缺少什麼我在這裏?

+0

e.stopPropagation()? –

+1

你需要使用'stopPrepagation'作爲回答,這顯然不是重複的。我們的伴侶問爲什麼他使用的功能不起作用,而不是與其他功能有什麼不同。 –

回答

0

除了e.preventDefault你還必須使用e.stopPropagation()來防止事件冒泡。你的情況,你也可以從事件處理程序返回false這一舉兩得:

$('body > div > ul > li > a').on("keydown",function (e) { 
    console.log("handled by the child - stop bubbling please"); 
    return false; 
}); 
3

嘗試e.stopPropagation()

e.stopPropagation()阻止事件冒泡DOM樹,防止任何父處理程序被通知的事件。

$('body > div > ul > li > a').on("keydown",function (e) { 
    console.log("handled by the child - stop bubbling please"); 
    e.preventDefault(); 
    e.stopPropagation(); 
}); 

區別?

What's the difference between event.stopPropagation and event.preventDefault?

+0

當你確定一個問題是重複的,而不是回答時,發表評論說它是重複的,以便人們可以正確地關閉它。 (當然,在約1400點的代表中,你可以直接投下相近的選票。) –

相關問題