VUE的阻止冒泡事件

VUE的阻止冒泡事件

vue中的阻止冒泡事件可以帮助我们实现当子盒子被点击时,父盒子不被触发对应的点击事件。

1.click.stop()方法

<div class="boxParent" @click="Parent($event)">
   <div class="boxSon" @click="son($event)">
   div>
div>
 .boxParent{
   	width: 400px;
    height: 400px;
    background-color: pink;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .boxSon{
    width: 100px;
    height: 100px;
    background-color: orange;
  }
 Parent(e){
  console.log(e.target,'父盒子被点击了')
 },
 son(e){
   console.log(e.target,'子盒子被点击了')
 }

VUE的阻止冒泡事件_第1张图片

当加了stop后,会发现点击子盒子时,不会触发父盒子的点击事件

<div class="boxParent" @click="Parent($event)">
   <div class="boxSon" @click.stop="son($event)">
   div>
div>

VUE的阻止冒泡事件_第2张图片

2.阻止事件冒泡的事件

(1)利用事件对象里面的e.stopPropagation()

Parent(e){
  console.log(e.target,'父盒子被点击了')
},
son(e){
  e.stopPropagation()
  console.log(e.target,'子盒子被点击了')
}

VUE的阻止冒泡事件_第3张图片

(2)IE6~8版本可使用事件对象的e.cancalBubble()

3.利用冒泡特性可做的优势:事件委托

给父节点设置一个事件,点击每个子节点就都会触发该事件

 <ul class="ulStyle" @click="clickUl($event)">
   <li>1li>
   <li>2li>
   <li>3li>
   <li>4li>
   <li>5li>
 ul>
clickUl(e){
  console.log(e.target,'点击的是li,但li没有添加事件,事件冒泡到了ul,触发了ul的点击事件')
}

VUE的阻止冒泡事件_第4张图片

你可能感兴趣的:(冒泡事件,javascript,开发语言)