我爱编程

事件流详解

2018-04-14  本文已影响0人  命运齿轮1

title: 事件流

事件作用范围

    //css

    <style type="text/css">
        #wrap {
          width: 200px;
          height: 200px;
          background: orange;
        }
        #content {
          position: relative;
          top: 50px;
          left: 50px;
          width: 100px;
          height: 100px;
          background: #eeddff;
        }
        #inner {
          position: relative;
          top: 25px;
          left:25px;
          width: 50px;
          height: 50px;
          background: #44ddff;
        }
    </style>


    //html
    <div id="wrap">
        <div id="content">
            <div id="inner"></div>
        </div>
    </div>

    //js
    <script>
        var wrap = document.getElementById('wrap');
        wrap.addEventListener('click',function(){
            alert('789');
        },false);
    </script>

    //当点击warp块(包括被子元素的部分)任何一部分时,都会弹出789。这是相当于3个click作用在其上。
试验

css html同上,

    //script
    var wrap = document.getElementById('wrap');
    var content = document.getElementById('content');
    var inner = document.getElementById('inner');

    wrap.addEventListener('click',function(){
        alert('789');
    },false);
    content.addEventListener('click',function(){
        alert('456');
    },false);
    inner.addEventListener('click',function(){
        alert('123');
    },false);

这样执行的话,就会先弹出123,然后弹出456,最后弹出789。

DOM事件流

css html 同上

        var wrap = document.getElementById('wrap');
        var content = document.getElementById('content');
        var inner = document.getElementById('inner');
        wrap.addEventListener('click',function(){
          alert('wrap');
        },true);
        content.addEventListener('click',function(){
          alert('content');
        },true);
        inner.addEventListener('click',function(){
          alert('inner');
        },true);

        wrap.addEventListener('click',function(){
          alert('wrap11');
        },false);
        content.addEventListener('click',function(){
          alert('content11');
        },false);
        inner.addEventListener('click',function(){
          alert('inner11');
        },false);

这样点击中心执行 会先弹出wrap 在弹出content 后弹出inner 然后弹出inner11,content11,wrap11。
按上面的例子为,先调用冒泡阶段的事件处理程序,再调用捕获阶段的事件处理程序。

上一篇 下一篇

猜你喜欢

热点阅读