码迷,mamicode.com
首页 > 其他好文 > 详细

事件流--事件冒泡现象及阻止

时间:2018-09-06 14:29:02      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:load   方法   window   body   lse   http   rop   示例   style   

 

 

事件冒泡现象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件冒泡现象</title>
    <style>
        div{padding: 50px;}
        #div1{background: red;}
        #div2{background: blue;}
        #div3{background: yellow;}
        
    </style>
    <script>
        window.onload = function(){
            var aDivs = document.getElementsByTagName(‘div‘);
            for(var i = 0; i < aDivs.length; i++){
                aDivs[i].onclick = function(){
                    alert(this.id);
                }
            }
        }

    </script>

</head>
<body>
    <div id="div1">
        <div id="div2">
            <div id="div3"></div>
        </div>
    </div>
</body>
</html>

浏览器效果

 

技术分享图片

 

阻止事件流的方法:

 
阻止事件冒泡:
 
事件对象.cancelBubble=true;  IE8一下阻止事件冒泡
事件对象。stopPropagation(); 其他浏览器阻止事件冒泡

 

代码示例:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件冒泡阻止</title>
    <style>
        div{padding: 50px;}
        #div1{background: red;}
        #div2{background: blue;}
        #div3{background: yellow;}
        
    </style>
    <script>
        window.onload = function(){
            var aDivs = document.getElementsByTagName(‘div‘);
            for(var i = 0; i < aDivs.length; i++){
                aDivs[i].onclick = function(ev){
                    var e = ev || window.event;
                    alert(this.id);
                    stopBubble(e);
                }
            }
        }

        /*阻止事件冒泡 */
        //e为事件对象
        function stopBubble(e){
            if(e.cancelBubble){
                e.cancelBubble = true;//ie8一下阻止方法
            }else{
                e.stopPropagation();//其他浏览器阻止方法
            }
        }

        /*---阻止事件冒泡---end*/




    </script>

</head>
<body>
    <div id="div1">
        <div id="div2">
            <div id="div3"></div>
        </div>
    </div>
</body>
</html>

浏览器效果

技术分享图片

 

总结

阻止事件流的固定写法

                /*
                    事件冒泡的浏览器兼容写法
                 */
                function stopBubble(e){
                    if(e.cancelBubble){
                        e.cancelBubble = true;//IE8一下阻止事件冒泡
                    }else{
                        e.stopPropagation();//其它浏览器阻止事件冒泡
                    }
                }

 

事件流--事件冒泡现象及阻止

标签:load   方法   window   body   lse   http   rop   示例   style   

原文地址:https://www.cnblogs.com/taohuaya/p/9597529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!