您的位置:首页 > 其它

div 嵌套 事件穿透

2013-03-28 14:17 756 查看
当多个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>

ie里两个div重叠时的事件穿透

一般的开发者都知道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="width:100%;height:100%;position:absolute" />

<div id="Div4"></div>

</div>

<div id="Div0" onclick="alert(22)"></div>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: