<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>实现点击子元素的和父元素触发不同事件</title>
<style>
*{
padding: 0;
margin: 0;
}
.wrap{
width: 500px;
height: 500px;
background-color: blue;
color: #fff;
padding-left: 20px;
}
p{
margin-bottom: 50px;
}
.child{
width: 300px;
height: 300px;
background-color: red;
color: black;
}
a:link{
color: #fff;
text-decoration: none;
}
a:visited{
color: #fff;
text-decoration: none;
}
a:hover{
color: #fff;
text-decoration: none;
}
</style>
</head>
<body>
<div class="wrap" onclick="fun1()">
<p>点击父元素</p>
<div class="child" onclick="fun2(event)">
<a href="#" onclick="fun3(event)">点击子元素</a>
</div>
</div>
<script type="text/javascript">
function fun1(){
// alert("点击父元素")
window.location.href='http://www.baidu.com'
}
function fun2(e){
e.stopPropagation()
alert("点击子元素")
}
function fun3(e){
e.preventDefault()
e.stopPropagation()
alert("点击a标签")
}
</script>
</body>
</html>
关键点:
e.preventDefault() 阻止事件冒泡
e.stopPropagation() 阻止a元素的默认跳转行为。
实例:
点击商品组件的时候点击按钮触发增加购物车事件,灰色按钮触发提示按键。点击除了按钮以外的区域,进入商品详情页。