js事件冒泡及event的target和currentTarget的区别

 

事件冒泡:从一个最具体的的元素接收,然后逐级向上传播

可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。

    <ul id="father">
      <li class="item1">aaaa</li>
      <li class="item2">bbb</li>
      <li class="item3">ccc</li>
      <li class="item4" id="child3">ddd</li>
    </ul>

 1. 在没用冒泡的情况下,打印出是一样的

<script type="text/javascript">
      document.getElementById("child3").onclick = function (event) {
        console.log(event.target === event.currentTarget); // 打印:true 
      };
    </script>

 2. 如果冒泡,看下区别

<script type="text/javascript">
      document.getElementById("father").onclick = function (event) {
        console.log(event.target); // 打印 <li class="item3">...
        console.log(event.currentTarget); // 打印 <ul id="father">...
};</script>
target:触发事件的元素
currentTarget:事件绑定的元素

3. 上面(父级)有事件的话,会一直往上执行

1和2都会打印,如果不想执行2的话,阻止冒泡用

document.getElementById("child3").onclick = function (event) {
        event.stopPropagation()
        console.log(event.target === event.currentTarget);
      };

 

 

.

 

posted @ 2021-03-15 15:37  James2019  阅读(216)  评论(0编辑  收藏  举报