• 1/29 关于Vue.js中 @click 事件修饰符


    首先说一些废话,

      买的vue书籍终于到了,开始慢慢学习中,今天也是对于书中的 事件修饰符 有点疑问 

      网上查了一些资料,由此来简单 总结一下

      ( 有错误 欢迎大家批评指正 )


    常见的事件修饰符

      其实以上修饰符主要的就是对于 冒 泡 的处理

      这里, 我写了一个较为简陋的 html 来方便查看

        ( 主要就是对于 父子盒子之间 的问题 进行的调试 )

      

       完整代码如下,方便有缘人调试

     1 <!DOCTYPE html>
     2 <html lang="zh-CN">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <title>事件修饰符</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
     8 </head>
     9 <style>
    10     .outterBox{
    11         margin: 0 auto;
    12         width: 400px;
    13         height: 300px;
    14         border: 2px;
    15         background-color: lightpink;
    16         display: flex; align-items: center;
    17     }
    18     .innerBox{
    19         width: 200px;
    20         height: 150px;
    21         background-color: lightblue;
    22         margin: auto;
    23         display: flex; align-items: center;
    24 
    25     }
    26 
    27     .theMostInnerBox{
    28         width: 100px;
    29         height: 75px;
    30         background-color: rgb(253, 208, 191);
    31         margin: auto;
    32     }
    33 
    34 </style>
    35 <body>
    36     <div id="app">
    37         <div class="outterBox" @click="outterBox">
    38             <div class="innerBox" @click="innerBox">
    39                 <div class="theMostInnerBox" @click="theMostInnerBox"></div>
    40             </div>
    41             </div>
    42         </div>
    43     </div>
    44 </body>
    45 
    46     <script>
    47         var vm = new Vue({
    48            el:'#app',
    49            data(){
    50                return{}},
    51            methods:{
    52             outterBox(){
    53                 console.log("outter box")
    54             },
    55             innerBox(){
    56                 console.log("inner box")
    57             },
    58             theMostInnerBox(){
    59                 console.log("theMostInner box")
    60             }
    61            }
    62         });
    63     </script>
    64 
    65 </html>
    View Code

    层级关系

      theMostInner box    <      inner box        <   outter box

      

      橘色   <    蓝色     <  紫色 

      theMostInner < inner < outter

       ( 什么是冒泡呢

            就是 你点击最内层的盒子 也相当于点击了第二层的盒子 接着相当于 最外层的盒子

            于是就会有

              )

    .stop

      .stop 是 阻止事件冒泡

        ( 注意区分 .self  , .self 没有阻止事件冒泡,只是冒泡事件 不能影响 .self , 即自己 )

      .stop 主要写在 子元素 

      ——————————————————————————

      若在第二盒子加上.stop ,事件只会顺序发生到 自己,冒泡到自己时 被中断

      

       ( 点击最内部盒子 )

      

      ( 点击第二个盒子 )

      

    .self

      .self 是 限制事件仅作用于节点自身

      通俗来说,就是别的事件影响不了自己,只有自己才能做自己的主人

        ( 这个情况下,冒泡事件发生了,但是.self 是旁观者,冷血无情 自己不会做事情 )

      ——————————————————————————

      若在第二个盒子加上.self ,冒泡事件会  穿过   自己发生

      

      ( 点击最内部盒子 )

      

      ( 点击第二个盒子 )

      

    .capture  

      .capture 当事件发生时,阻止事件捕获

      这个我也不知道,怎么通俗来讲,如果非要说,就是在冒泡事件发生的时候,

      如果有.capture 修饰符的 从外向内 ,依次触发

      其余的 由内向外 按原顺序 顺序触发

      ——————————————————————————

      若把最外层的盒子加上.capture

      

      ( 点击最内部盒子 )

      

      .capture 只有一个,首先  .capture 这个事件执行

      然后冒泡的 其余事件执行

      若把第二层盒子和外层盒子都加上.capture

      

       ( 点击最内部盒子 )

      

      .capture 有两个,首先  .capture 这两个事件 由外到内 执行

      然后冒泡的 其余事件执行 ( 冒泡事件的顺序执行 )

    然后就是剩下的 比较容易理解就简单说一下

      .prevent 就是不让做默认的行为

        ( 比如 submit 是提交,弄了这个之后 ,页面就不会刷新/跳转 提交表单 )

      .once 就是事件触发一次,就结束监听

      .passive 只用于滚动事件 限制事件永不调用preventDefault ( ) 方法( .stop )

       

    最后

      已经有代码了,希望有缘人朋友还是调试一下,这样理解最快

      有错误欢迎大佬指正批评

      

     

    Let it roll
  • 相关阅读:
    9IDEA常见的快捷键
    8Java类与对象
    5Java运算符
    10Java面向对象中级
    3Java基础
    4Java基础变量
    6Java控制结构
    7Java数组
    11Java面向对象高级
    缓存事件过期监听机制
  • 原文地址:https://www.cnblogs.com/WaterMealone/p/14346500.html
Copyright © 2020-2023  润新知