簡體   English   中英

如何防止父元素事件從子事件中的代碼執行

[英]How can I prevent parent element event execution from code inside children event

我在標題中的問題可能看起來很模糊。 我為這個問題畫了一個例子:

 container.onclick = () => { alert(0); }; content.onclick = () => { alert("how can I prevent here appearance alert(0) from parent element event?"); //how can I prevent parent event by content clicked? };
 #container{ height: 100px; background-color: gray; } #content{ height: 50px; width: 150px; background-color: green; }
 <div id="container"> <div id="content"></div> </div>k

這是一個簡單的例子。 在實際項目中,我無法將這兩個事件合並為一個,因為第一個事件是在我的框架內部某處以編程方式分配的,單擊內容后不應將其從 EventListener 中刪除

通常,是否可以通過單擊 DOM 層以某種方式中斷調用鏈事件的執行? 我試圖這樣做:

content.onclick = () => {
  alert("how  can I prevent here appearance alert(0) from parent element event?");
  e.preventDefault();
  return false;
  //how can I prevent parent event by content clicked?
};

但這當然沒有成功

為此,您可以像這樣使用 js 的stop propogation

<div id="container">
 <div id="content" onclick="event.stopPropagation();">
 </div>  
</div>

因此,當您單擊內容時,它不會僅觸發容器事件。

您應該通過依賴注入將事件傳遞給特定方法 ( content.onclick ),然后停止它的傳播。

 container.onclick = () => { alert(0); }; content.onclick = (e) => { e.stopPropagation(); alert("Voilà, this prevent that appears alert(0) from parent element event."); };
 #container{ height: 100px; background-color: gray; } #content{ height: 50px; width: 150px; background-color: green; }
 <div id="container"> <div id="content"></div> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM