zoukankan      html  css  js  c++  java
  • 事件捕获,事件冒泡,事件取消

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <style>
    div {padding: 50px;}
    #div1 {background: red;}
    #div2 {background: blue;}
    #div3 {background: green; position: absolute; top: 300px;}
    </style>
    <script>
    window.onload = function() {
        var oDiv1 = document.getElementById('div1');
        var oDiv2 = document.getElementById('div2');
        var oDiv3 = document.getElementById('div3');
        function fn1() {
            alert( this.id );
        }
        //依次执行321
        oDiv1.onclick = fn1;
        oDiv2.onclick = fn1;
        oDiv3.onclick = fn1;
        
        //false表示冒泡
        //告诉div1,如果有一个      出去        的事件触发了你,你就去执行fn1这个函数,先执行3最后执行1。
        oDiv1.addEventListener('click', fn1, false);
        oDiv2.addEventListener('click', fn1, false);
        oDiv3.addEventListener('click', fn1, false);
        
        //告诉div1,如果有一个       进去     的事件触发了你,你就去执行fn1这个函数,先执行1最后执行3。
        oDiv1.addEventListener('click', fn1, true);
        oDiv2.addEventListener('click', fn1, true);
        oDiv3.addEventListener('click', fn1, true);
        
        
        
        oDiv1.addEventListener('click', function() {
            alert(1);
        }, false);
        oDiv1.addEventListener('click', function() {
            alert(3);
        }, true);
        oDiv3.addEventListener('click', function() {
            alert(2);
        }, false);
        //执行321
        
    }
    </script>
    </head>
    
    <body>
    点击div3时,进来的点击事件(事件捕获)从1到3,出去的点击事件(事件冒泡)从3到1.每个div经历2个点击事件。
        <div id="div1">
            <div id="div2">
                <div id="div3"></div>
            </div>
        </div>
    </body>
    </html>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <script>
    /*
    第一种事件绑定形式的取消
    */
    function fn1() {
        alert(1);
    }
    function fn2() {
        alert(2);
    }
    
    document.onclick = fn1;
    document.onclick = null;    //取消,如果是通过attachEvent实现的绑定则不能这么取消。
    
    /*
    ie : obj.detachEvent(事件名称,事件函数);
    标准 : obj.removeEventListener(事件名称,事件函数,是否捕获);
    */
    document.attachEvent('onclick', fn1);
    document.attachEvent('onclick', fn2);
    document.detachEvent('onclick', fn1);
    
    document.addEventListener('click', fn1, false);//绑定出去的函数
    document.addEventListener('click', fn1, true);//绑定进来的函数
    document.addEventListener('click', fn2, false);
    
    document.removeEventListener('click', fn1, false);//取消出去的函数
    </script>
    </head>
    
    <body>
    </body>
    </html>
  • 相关阅读:
    Android中没有插入SD情况下的文件写入和读取
    Android在OnCreate中获取控件的宽度和高度
    Android Adapter遇到的崩溃问题
    IIS Server Application Unavailable 解决方法
    Silverlight跨域访问WebService解决方法
    Silverlight 与 JS交互
    Dell 1440 黑苹果 (从10.6.3升级到10.6.8)
    Android控件系列之相册Gallery&Adapter适配器入门&控件缩放动画入门
    Android颜色编辑器的制作中遇到的问题
    马云讲给在工厂里工作的员工的话(转自qq)
  • 原文地址:https://www.cnblogs.com/yaowen/p/5725566.html
Copyright © 2011-2022 走看看