当多个div嵌套时候,点击最里层的div,会调用外层div的事件。如果我们要实现点击div,只是调用当前div的事件,闲话不说,贴出代码
<html>
<head>
<title></title>
<script language="javascript" type="text/javascript">
function BigDiv(event) {
alert("Big");
if (event.stopPropagation)
{
event.stopPropagation();//在基于firefox内核的浏览器中支持做法stopPropagation
}
else
{
event.cancelBubble = true;//基于ie的写法
}
}
function LittleDiv() {
alert("little");
event.cancelBubble = true;
}
function yy() {
alert("sb");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id ="fdk1" onclick="yy()">
YY
<!--此处会调用yy()事件-->
<div id="child2" onclick="BigDiv(event)">
大div
<!--加event.cancelBubble=true",只调用当前div的事件,禁止事件的浮生-->
<div onclick="LittleDiv();">
小div</div>
</div>
</div>
</form>
</body>
</html>
一般的开发者都知道ie6,7,8中如果两个div有层叠关系,上层的div背景透明,且没有内容,那么下层div在某些情况下就可以响应点击在上层的事件,也就是说,上层的div被穿透了.
一般来说,下层div可以响应点击的区域如下:
1,如果下层div有边框的话,边框可以响应点击
2,背景图和背景色都不能响应点击
3,内容可以响应点击,比如文本,图片等
另外:再有一种情况,如果外层div有click事件,点击上层div,这时有以下几种情况:
1,如果点击的下层div没有背景,这时候click事件不会响应
2,如果点击的下层div有背景,则上层div会响应click事件
3,如果点击在下层div的border上或者内容上,则上层div不响应click事件,下层div的click被触发
<html>
<body>
<div id="Div1" onclick="alert(11)">
<!--<img src=mask.gif style="100%;height:100%;position:absolute" />
<div id="Div4"></div>
</div>
<div id="Div0" onclick="alert(22)"></div>
</body>
</html>