Vue中阻止table父元素冒泡的一些事件

逃离我推掉我的手 2022-02-25 08:12 291阅读 0赞

在@click的后面加上.stop,即@click.stop=“doSomething”,可阻止单击事件冒泡

(1)阻止单击事件冒泡

  1. <button @click.stop="doSomething"></button>

( 2 ) 让form提交事件不再重新加载页面

  1. <form @submit.prevent="onSubmit"></form>

(3)修饰符串联的时候,用个a标签来看

  1. <a href="/#" @click.stop.prevent="doSomething"></a>

使用修饰符的时候修饰符顺序很重要的,

  1. <div @click="myfun1()">
  2. <a href="/#" @click="myfun2()">
  3. A标签
  4. <div @click="myfun3()">标签3</div>
  5. </a>
  6. </div>
  7. <script>
  8. methods: {
  9. myfun1(){
  10. console.log('1111111111')
  11. }
  12. myfun2(){
  13. console.log('2222222222')
  14. }
  15. myfun3(){
  16. console.log('3333333333')
  17. }
  18. }
  19. </script>

常理我们点击**‘A标签’会打印出以下结果并跳转
‘2222222222’,
‘11111111111’
点击
‘标签3’**会打印出如下结果并跳转
‘3333333333’,
‘2222222222’,
‘11111111111’,
如果我们添加修饰符.prevent.self之后的结果呢:

  1. <div @click="myfun1()">
  2. <a href="/#" @click.prevent.self="myfun2()">
  3. A标签
  4. <div @click="myfun3()">标签3</div>
  5. </a>
  6. </div>

此时点击A标签打印出的是以下结果而且都没有跳转
‘2222222222’
‘11111111111’
点击标签3打印出:
‘3333333333’,
‘11111111111’,
很显然加上.prevent.self后他阻止了自身的事件也阻止他人的事件。

那么我们再给修饰符的顺序换一下变成 .self.prevent,这下点击后又会发生什么呢:

  1. <div @click="myfun1()">
  2. <a href="/#" @click.self.prevent="myfun2()">
  3. A标签
  4. <div @click="myfun3()">标签3</div>
  5. </a>
  6. </div>

这下点击A标签后打印出的是:
此时点击A标签会依次打印出出‘22222222’,‘1111111111’,没有跳转。点击标签3会依次弹出‘33333333’,‘1111111111’,并跳转。
此时大家都已经发现,这就是阻止对元素自身的点击。
反正是有点绕的,不过自己多测试几次就知道了

发表评论

表情:
评论列表 (有 0 条评论,291人围观)

还没有评论,来说两句吧...

相关阅读

    相关 阻止事件冒泡

    事件的冒泡(Bubble) \- 所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发 \- 在开发中大部分情况冒泡都是有用的,如果