div 嵌套 事件穿透

当多个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>

posted @ 2013-03-28 14:17  赵雪丹  阅读(1640)  评论(0编辑  收藏  举报