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


    事件冒泡现象

    <!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();//其它浏览器阻止事件冒泡
                        }
                    }
  • 相关阅读:
    ASCII码表以及不同进制间的O(1)转换
    四则运算表达式的语法分析
    语法分析器初步学习——LISP语法分析
    ASC与HEX之间的转换
    字节存储数据
    进制之间的转换
    java多线程CountDownLatch
    java反射机制
    java注解
    使用javafx实现视频播放器
  • 原文地址:https://www.cnblogs.com/taohuaya/p/9597529.html
Copyright © 2020-2023  润新知