![](/img/trans.png)
[英]React - Prevent onMouseDown event on parent element when a child element is clicked
[英]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.