Javascript DOM 单个元素的onclick事件触发器
Javascript DOM Onclick event trigger for single element
基本上我得到了一个页面,代码:
<body>
<div onclick="alert('You clicked ' + this.tagName)">
<h1 onclick="alert('You Clicked ' + this.tagName)">Click Me</h1>
</div>
</body>
这不是我的确切脚本,但我出于演示目的重建了它,当我单击 H1
时,它会像它应该的那样发出警报,但是当我关闭警报框时,DIV
会出现,我尝试了另一种解决方法
document.addEventListener('click' , function(e){
var target = e.target || e.srcElement;
alert('You Clicked ' + target.tagName);
});
对于页面上的某些元素,由于奇怪的原因,这不适用于页面上的所有元素,这是一个原因,我错过了什么吗?
那是因为事件在尽可能深的元素上触发后,然后按嵌套顺序在父元素上触发
您需要在您的案例中停止事件传播
<body>
<div onclick="alert('You clicked ' + this.tagName)">
<h1 onclick="alert('You Clicked ' + this.tagName);event.stopPropagation();">Click Me</h1>
xcxc
</div>
</body>
这里是 fiddle:
http://jsfiddle.net/9f8mfpvq/1/
基本上我得到了一个页面,代码:
<body>
<div onclick="alert('You clicked ' + this.tagName)">
<h1 onclick="alert('You Clicked ' + this.tagName)">Click Me</h1>
</div>
</body>
这不是我的确切脚本,但我出于演示目的重建了它,当我单击 H1
时,它会像它应该的那样发出警报,但是当我关闭警报框时,DIV
会出现,我尝试了另一种解决方法
document.addEventListener('click' , function(e){
var target = e.target || e.srcElement;
alert('You Clicked ' + target.tagName);
});
对于页面上的某些元素,由于奇怪的原因,这不适用于页面上的所有元素,这是一个原因,我错过了什么吗?
那是因为事件在尽可能深的元素上触发后,然后按嵌套顺序在父元素上触发
您需要在您的案例中停止事件传播
<body>
<div onclick="alert('You clicked ' + this.tagName)">
<h1 onclick="alert('You Clicked ' + this.tagName);event.stopPropagation();">Click Me</h1>
xcxc
</div>
</body>
这里是 fiddle: http://jsfiddle.net/9f8mfpvq/1/