事件的三个阶段+事件冒泡+事件捕获+事件委托

2018-10-30  本文已影响0人  夏天deg

一个事件的处理过程主要有三个阶段:捕获、目标、冒泡。

  • 事件捕获: 事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。
  • 事件冒泡:事件冒泡刚好相反,是从触发事件的那个节点一直到document,是自下而上的去触发事件。
  • 事件委托:利用了事件冒泡的原理,在下方通过实例讲解
  • 阻止事件委托和冒泡:在事件函数中执行event.stopPropagation()

实例讲解:

参考链接

<div id="parent">
  <div id="child" class="child"></div>
</div>
<script type="text/javascript">
       document.getElementById("parent").addEventListener("click",function(e){
            console.log("parent事件被触发,"+this.id);
        });
        document.getElementById("child").addEventListener("click",function(e){
            console.log("child事件被触发,"+this.id);
        });
</script>

上述代码都是采用的事件冒泡机制:

<script type="text/javascript">
       document.getElementById("parent").addEventListener("click",function(e){
            console.log("parent事件被触发,"+this.id);
        },true);
        document.getElementById("child").addEventListener("click",function(e){
            console.log("child事件被触发,"+this.id);
        },true);
</script>

上述代码都是采用的事件捕获机制:

事件委托

当有多个类似的元素需要绑定事件时,一个一个去绑定即浪费时间,又不利于性能,这时候就可以用到事件委托,给他们的一个共同父级元素添加一个事件函数去处理他们所有的事件情况.

<ul id="1ist">
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
</ul>
document.getElementById('1ist').addEventListener('click',function(e){
  e.target.innerHTML = "被点击";
});

上述代码才用事件委托机制,虽然我们没有给每个li绑定事件,我们绑定事件的时候是采用的默认的冒泡,所以可以理解为点击之后冒泡执行的;

上一篇 下一篇

猜你喜欢

热点阅读