• Vue指令之事件修饰符


    事件修饰符:

    + .stop 阻止冒泡

    + .prevent 阻止默认事件

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

    + .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

    + .once 事件只触发一次

     

    .stop 阻止冒泡

        <!--stop  阻止冒泡  -->
        <!-- 当点击button事件后,首先执行的是btnHandle事件,在执行divHandler事件 -->
        <div class="box" @click="divHandler">
            <!--<input type="button" value="戳他" @click.stop="btnHandler"> 阻止该事件冒泡 -->
            <input type="button" value="戳他" @click="btnHandler">
        </div>
    
    
        <script src="./lib/vue-2.4.0.js"></script>
        <script>
        
            var vm=new Vue({
                el:'.box',
                data:{
    
                },
                methods:{
                    divHandler(){
                        alert('触发了divHandler事件');
                    },
                    btnHandler(){
                        alert('触发了btnHandler事件');
                    }
                }
            });

    .prevent 阻止默认行为

     <!-- .prevent 阻止默认行为 -->
        <!-- 当点击有问题去百度,的时候触发了linkHandler事件,同时也直接去百度了 -->
        <!-- <a href="http://www.baidu.com" @click.prevent='linkHandler'>有问题去百度!</a> 阻止去打开百度行为 -->
        <div class="box" @click="divHandler">
            <input type="button" value="戳他" @click="btnHandler">
            <a href="http://www.baidu.com" @click.prevent='linkHandler'>有问题去百度!</a>
        </div> 
        
        <script src="./lib/vue-2.4.0.js" ></script>
        <script>
        
            var vm=new Vue({
                el:'.box',
                data:{
    
                },
                methods:{
                    divHandler(){
                        alert('触发了divHandler事件');
                    },
                    btnHandler(){
                        alert('触发了btnHandler事件');
                    },
                    linkHandler(){
                        alert("触发了linkHandler事件");
                    }
    
                }
            });

    .capture 实现捕获触发事件的机制

      

     <!-- .capture 实现捕获触发事件机制 -->
        <!-- 当点击btn按钮会触发btnHandler事件,在触发divHandler事件,利用capture实现从外到内的事件 -->
        <!-- <div class="box" @click.capture="divHandler"> 实现先divHandler在btnHandler -->
             <div class="box" @click.capture="divHandler">
    <input type="button" value="戳他" @click="btnHandler"> <a href="http://www.baidu.com" @click='linkHandler'>有问题去百度!</a> </div> <script src="./lib/vue-2.4.0.js" ></script> <script> var vm=new Vue({ el:'.box', data:{ }, methods:{ divHandler(){ alert('触发了divHandler事件'); }, btnHandler(){ alert('触发了btnHandler事件'); }, linkHandler(){ alert("触发了linkHandler事件"); } } }); </script>

    .self 实现只有点击当前元素时候,才会触发事件处理函数

    .self 只会阻止自己身上冒泡行为的触发,并不会真正阻止 冒泡的行为

      

    <div class="outer" @click="div2Handler">
          <div class="inner" @click.self="div1Handler">
            <input type="button" value="戳他" @click="btnHandler">
          </div>
        </div> 
    
    <script>
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {
            div1Handler() {
              console.log('这是触发了 inner div 的点击事件')
            },
            btnHandler() {
              console.log('这是触发了 btn 按钮 的点击事件')
            },
            linkClick() {
              console.log('触发了连接的点击事件')
            },
            div2Handler() {
              console.log('这是触发了 outer div 的点击事件')
            }
          }
        });
      </script>

     .once 只触发一次事件处理函数

      

    <a href="http://www.baidu.com" @click.prevent.once="linkClick">有问题,先去百度</a>
    
    
    <script>
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {
            div1Handler() {
              console.log('这是触发了 inner div 的点击事件')
            },
            btnHandler() {
              console.log('这是触发了 btn 按钮 的点击事件')
            },
            linkClick() {
              console.log('触发了连接的点击事件')
            },
            div2Handler() {
              console.log('这是触发了 outer div 的点击事件')
            }
          }
        });
  • 相关阅读:
    解决windows 下Java编译和运行版本不一致的错误has been compiled by a more recent version
    解决两个OpenCV 报错 (raise.c and GTK) ,重新安装和编译
    Java|如何使用“Java”爬取电话号码(转载)
    Java手机号码工具类(判断运营商、获取归属地)以及简要的原理跟踪(转载)
    Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    mysql分库分表
    python将html文件转换为pdf
    mysql获取字段名和对应的注释
    mysql大表查询慢对应方案
    harbor安装
  • 原文地址:https://www.cnblogs.com/xiaowie/p/11572669.html
Copyright © 2020-2023  润新知