关于js事件冒泡和事件捕获

2018-10-19 06:14:12来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

  事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。

<div id="parent" style="height: 100px;width: 100px;background-color: pink;">
<div id="child" style="width:100%; height:100%">
</div>
</div>
<script>
    document.getElementById('parent').addEventListener('click',(e) =>{
        alert('parent');
    })

    document.getElementById('child').addEventListener('click',(e) =>{
        alert('child');
    })
</script>

  结果先输出child,再输出parent,事件的触发顺序自内向外,这是事件冒泡。

<div id="parent" style="height: 100px;width: 100px;background-color: pink;">
<div id="child" style="width:100%; height:100%"></div></div>
 <script> document.getElementById('parent').addEventListener('click',(e) =>{ alert('parent'); },true) document.getElementById('child').addEventListener('click',(e) =>{ alert('child'); },true)
</script>

结果先输出parent,再输出child,事件触发顺序变更为自外向内,这是事件捕获。

还有一种写法使用setTimeOut实现捕获

<div id="parent" style="height: 100px;width: 100px;background-color: pink;">
<div id="child" style="width:100%; height:100%"></div></div>
    
    <script>
        document.getElementById('parent').addEventListener('click',(e) =>{
            alert('parent');
        })
    
        document.getElementById('child').addEventListener('click',(e) =>{
            setTimeout(() => {
                alert('child');
            });
        })
    </script>

关于setTimeout和setInterval的深入理解 https://www.cnblogs.com/xiaohuochai/p/5773183.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JS(JavaScript)的初了解(更新中&#183;&#183;&#183;)

下一篇:for、for / in循环