这个问题在这里已有答案:
我试图了解事件冒泡,同时尝试使用我自己的代码:`
<!DOCTYPE html>
<html>
<body>
<div onclick="alert('1')">
1
<div onclick="alert('2')">
2
<div onclick="alert('3')">3</div>
</div>
</div>
</body>
</html>
在这里我看到,当点击div 3时,它显示三个警报(3 2 1)。在我将第一个div标签更改为P标签后,我点击相同的div 3它只出现两个警报(3 2)。这里,为什么警报1没有出现,因为它在父(P)标签下。
将第一个div标记更改为P标记后,代码如下所示:
<p onclick="alert('1')">
1
<div onclick="alert('2')">
2
<div onclick="alert('3')">3</div>
</div>
</p>
仅仅因为浏览器会在分层HTML标记时修复你的错误。
在适当的时候(在块级DIV之前)插入关闭的</p>
标签,因为<div>
不是<p>
的允许后代。
生成的标记是:
<p onclick="alert('1')">
1
</p>
<div onclick="alert('2')">
2
<div onclick="alert('3')">3</div>
</div>
<p></p>