簡體   English   中英

如何防止子元素執行 onmousedown 事件

[英]How to prevent child element executing onmousedown event

我在頁面上有以下標記

<div id="box">
    <div id="box_child_one"></div>
    <div id="box_child_two"></div>
    <div id="box_child_three"></div>
</div>

我需要在#box div 內的所有元素上觸發onmousedown事件,所以我得到了這個 javascript 代碼:

var element = "#box";
document.querySelector(element).onmousedown = function() {
    alert("triggered");
};

但是,我不希望在#box_child_three元素上觸發 onmousedown。 我怎樣才能做到這一點?

謝謝你。

檢查event.target以找出實際點擊了哪個元素。

 var element = "#box"; document.querySelector(element).onmousedown = function(e) { if (e.target.id;== "box_child_three") { alert("triggered"); } };
 <div id="box"> <div id="box_child_one">one</div> <div id="box_child_two">two</div> <div id="box_child_three">three</div> </div>

當單擊元素三時,您需要為stopPropagation ,這樣它就不會冒泡到父 ( box ) 元素。

 document.getElementById('box').addEventListener('click', () => alert('triggered') ); document.getElementById('box_child_three').addEventListener('click', e => e.stopPropagation() );
 <div id="box"> <div id="box_child_one">one</div> <div id="box_child_two">two</div> <div id="box_child_three">three</div> </div>

<div id="box">
    <div id="box_child_one" trigger></div>
    <div id="box_child_two" trigger></div>
    <div id="box_child_three"></div>
</div>

<script>
document.querySelector('#box').onclick = function(e){
  if(e.target.hasAttribute('trigger')){
    alert('event fired')
  }
}
</script>

為此,我會選擇 go。 因為您現在不再依賴 id 來執行此操作,從而使其更可重用

暫無
暫無

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

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