如果我有一個文本框和按鈕:
<input id='text'/> <button id='btn'>Click me</button>
我的按鈕將焦點設置到文本框的地方在它的單擊事件:
$(document).ready(function(){
$('#btn').click(function(event){
console.log('btn ');
$('#text').focus();
});
$('#text').keyup(function(event){
console.log('key ');
});
});
...如果你使用回車鍵觸發按鈕單擊,不知何故,接收焦點的文本元素也會收到輸入按鍵。
這裏是展示此行爲的小提琴:
https://jsfiddle.net/qup6keLd/
使用Tab鍵將焦點設置到該按鈕,然後按Enter鍵。這兩個事件都將被觸發。使用空格觸發按鈕的點擊不會執行此操作。爲什麼會發生這種情況,以及如何防止它(除去focus()調用之外)?
我認爲該事件被傳播下來的樹。您可以消耗事件以防止它傳播,但我不記得如何。 – Carcigenicate
@Carcigenicate'e.stopPropgation()' – Polyov
這是一個很好的答案,它處理[Javascript中的事件](http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing) – Polyov