3 回答

TA貢獻1831條經驗 獲得超10個贊
這是Event Bubbling
,這意味著每個事件不僅會在目標元素上觸發,還會在其祖先元素上觸發。
為防止此行為,您可以使用Event.stopPropagation()
to 阻止事件傳播到目標元素的祖先元素。
document.querySelector('.a').onclick = () => {
document.querySelector('.a').style.backgroundColor = 'black'
}
document.querySelector('.b').onclick = (event) => {
event.stopPropagation();
document.querySelector('.b').style.backgroundColor = 'violet'
}
div { width: 100px; height: 100px; }
.a { padding: 40px; background: red; }
.b { background: blue; }
<div class="a">
a
<div class="b">b</div>
</div>

TA貢獻1815條經驗 獲得超13個贊
JS中有一個概念叫做事件冒泡。默認情況下,特定元素上發生的任何事件都將傳播到父元素及其父元素,依此類推,直到事件到達文檔。
為了阻止這種行為,Event.stopPropagation
將進行救援并將停止將事件傳播給父級。
因此,在這種情況下調用e.stopPropagation
具有onclick
類 ie 的 div 的處理程序b
,內部 div 將停止將事件傳播到父 div。
document.querySelector('.a').onclick = (e) => {
document.querySelector('.a').style.backgroundColor = 'black'
}
document.querySelector('.b').onclick = (e) => {
e.stopPropagation();
document.querySelector('.b').style.backgroundColor = 'violet'
}
.b {
width: 50%;
}
<div class="a">
<div class="b">
Dummy
</div>
</div>

TA貢獻2003條經驗 獲得超2個贊
嘗試這個 :
document.querySelector('.a').onclick = ()=>{
document.querySelector('.a').style.backgroundColor ='black'
}
document.querySelector('.b').onclick = (e) => {
e.stopImmediatePropagation();
document.querySelector('.b').style.backgroundColor ='violet'
}
<div class="a">a
<br/>
<div class="b">
Click here!
</div>
</div>
添加回答
舉報