亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

父子 div 上的事件處理程序

父子 div 上的事件處理程序

三國紛爭 2023-03-03 10:50:17
這是我的 HTML 文件<div class="a">    <div class="b">    </div></div><script>    document.querySelector('.a').onclick = ()=>{        document.querySelector('.a').style.backgroundColor ='black'    }    document.querySelector('.b').onclick = ()=>{        document.querySelector('.b').style.backgroundColor ='violet'    }</script>當我單擊類為“b”的 div 時,類為“a”的 div 上的事件處理程序也會被調用。我只想調用帶有“b”類事件處理程序的 div。有人可以幫忙嗎?
查看完整描述

3 回答

?
慕哥6287543

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>


查看完整回答
反對 回復 2023-03-03
?
蕭十郎

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>


查看完整回答
反對 回復 2023-03-03
?
湖上湖

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>


查看完整回答
反對 回復 2023-03-03
  • 3 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號