基本上我得到了一个页面,代码:
<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/
关于Javascript DOM Onclick 事件触发单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32520158/