• v-on 事件修饰符


     

    事件修饰符:

     
    1. .stop 阻止冒泡
    2. .prevent 阻止默认事件
    3. .capture 添加事件侦听器时使用事件捕获模式
    4. .self 只当该事件在该元素本身时(不是子元素)触发时才回调
    5. .once 事件只触发一次

    一、.stop 修饰符,阻止时间冒泡:

    1、未加.stop事件修饰符:

    CSS部分:

     1     <style>
     2         .inner {
     3             background-color: green;
     4             height:100px;
     5             padding:20px;
     6         }
     7 
     8         .outer {
     9             padding: 10px;
    10             background-color: yellow;
    11         }
    12     </style>

    HTML部分:

    1<div id="app">
    2        <div class="outer" @click="outerDivHandler">
    3            <div class="inner" @click="innerDivHandler">
    4                <button @click="btnHandler">点我</button>
    5            </div>
    6        </div>
    7 </div>

    JS部分:

     1   var app = new Vue({
     2             el: "#app",
     3             data() {
     4             },
     5             methods: {
     6                 btnHandler() {
     7                     console.log("btnHandler事件触发了");
     8                 },
     9                 innerDivHandler() {
    10                     console.log("innerDivHandler事件触发了");
    11                 },
    12                 outerDivHandler() {
    13                     console.log("outerDivHandler事件触发了");
    14                 },
    15             },
    16         });

    点击按钮时,输出结果,点击按钮时分别触发了父级的点击事件。

    2、添加.top属性修饰符后

    1     <div id="app">
    2         <div class="outer" @click="outerDivHandler">
    3             <!-- outerDiv -->
    4             <div class="inner" @click="innerDivHandler">
    5                 <!-- button的点击事件添加了属性修饰符【.top】 -->
    6                 <button @click.stop="btnHandler">点我</button>
    7             </div>
    8         </div>
    9     </div>

    再点击button,结果,只触发了button上的事件,父级元素绑定的点击事件并没有触发。

    二、.prevent修饰符,阻止默认事件

    阻止元素的默认事件发生。

     1 <a href="http://www.baidu.com" @click="aHandler">百度一下</a> 

    在浏览器上点击 百度一下 会自动跳转到百度页面,当然aHandler事件也会触发,那么怎么阻止a跳转到百度页面呢?在@click后面加上.prevent属性修饰符即可

    1 <a href="http://www.baidu.com" @click.prevent="aHandler">百度一下</a>

    再点击 百度一下  发现只执行了aHandler事件,并未跳转。

     

    三、.capture 添加事件侦听器时使用事件捕获模式

     1、未添加.capture修饰符:

    1  <div class="inner" @click="innerDivHandler">
    2     <button @click="btnHandler">点我</button>
    3  </div>

    结果:

    2、添加了.capture后

    1 <div class="inner" @click.capture="innerDivHandler">
    2    <button @click="btnHandler">点我</button>
    3 </div>

    结果:

     四、.self 修饰符,只有事件发生在自己身上时才触发

    1     <div class="inner"  @click.self="innerDivHandler">
    2         <button @click="aHandler">点我</button>
    3     </div>

    点击按钮,只触发了aHandler事件。

    点击绿色区域,只触发了div绑定的事件。

    注意:.self只会阻止自己身上的冒泡事件发生,如果上述div还有兄弟元素也绑定了事件,未加.self修饰符,按钮也未加.stop修饰符,那么点击按钮,依然会触发其兄弟元素的事件。

     五、.once 事件只触发一次,第二次点击就没得效果了。

    <button @click.once="btnHandler">点我</button>
  • 相关阅读:
    SQL Server 数据库定时自动备份
    SQL SERVER 2012设置自动备份数据库
    SyncNavigator 数据库同步软件怎么用?
    SyncNavigator下载|SyncNavigator数据库同步软件 v8.4.1
    关于数据同步的几种实现
    课堂练习-找水王:
    软件工程第十四周总结
    Alpha版(内部测试版)发布
    软件工程第十三周总结
    意见评论汇总
  • 原文地址:https://www.cnblogs.com/chenzongyan/p/10247463.html
Copyright © 2020-2023  润新知