首页 > 其他分享 >[Vue]事件修饰符

[Vue]事件修饰符

时间:2023-10-22 12:55:58浏览次数:30  
标签:触发 Vue console log 修饰符 事件

Vue中的事件修饰符:
1. prevent:阻止默认事件(常用);
2. stop:阻止事件冒泡(常用);
3. once:事件只触发一次(常用);
4. capture:使用事件的捕获模式;
5. self:只有event.target是当前操作的元素是才触发事件;
6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕;
                    一般会先执行响应事件,响应事件结束后回调执行默认事件。但工作量较大会有卡顿问题,可用passive解决。移动端用得多。
                    (scroll指的是滚动条滚动,键盘上下、鼠标滚轮均可触发,按照滚动条的位移距离多次触发。
                    wheel指的是鼠标滚轮滚动,鼠标滚轮滚1次,事件触发1次。)

多个事件修饰符可以连续写,如:@click.prevent.stop

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件修饰符</title>
    <script src="lib/vue-2.5.9.js"></script>
    <style>
        .box {
            background-color: aquamarine;
            width: 200px;
            height: 40px;
            margin: 10px;
        }

        .list {
            width: 200px;
            height: 200px;
            background-color: rosybrown;
            overflow: scroll;
        }

        li {
            height: 100px;
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="root">
        <!-- 阻止默认事件 -->
        <a href="https://www.baidu.com" @click.prevent="show_info">点我去百度</a>

        <div class="box" id="demo0" @click="show_log(0)">
            <!-- 阻止事件冒泡 -->
            <button id="demo1" @click.stop="show_log(1)"> 点我打印stop</button>
            <!-- 只触发一次 -->
            <button id="demo2" @click.once="show_log(2)"> 点我打印once</button>
        </div>

        <!-- 多个事件修饰符可以连续写。有先后顺序,一般影响不大 -->
        <div class="box" id="demo0" @click="show_log(0)">
            <a href="https://www.baidu.com" @click.prevent.stop="show_info(1)">点我去百度</a>
        </div>

        <!-- 事件捕获,先获取再冒泡 -->
        <div class="box" id="demoo0" @click.capture="show_log(0)">
            <button id="demoo1" @click="show_log(1)">事件捕获capture</button>
        </div>

        <!-- 只有event.target是当前操作的元素是才触发事件(也可以阻止冒泡) -->
        <div class="box" id="demoo0" @click.self="show_log(0)">
            <button id="demoo1" @click="show_log(1)">self</button>
        </div>

        <!-- 事件的默认行为立即执行,无需等待事件回调执行完毕 -->
        <!-- 一般会先执行响应事件,响应事件结束后回调执行默认事件。但工作量较大会有卡顿问题,可用passive解决。移动端用得多。 -->
        <!-- scroll指的是滚动条滚动,键盘上下、鼠标滚轮均可触发,按照滚动条的位移距离多次触发 -->
        <!-- wheel指的是鼠标滚轮滚动,鼠标滚轮滚1次,事件触发1次 -->
        <!-- <ul class="list" @scroll="gun"> -->
        <ul class="list" @wheel="gun">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>
</body>
<script>
    let vm = new Vue({
        el: '#root',
        data: {
            name: 'mingzi',
        },
        methods: {
            show_info: function () {
                alert('被骗了!!')
            },
            show_log: function (info) {
                console.log('我是日志,来自-->', info)
            },
            gun: function () {
                for (var i = 0; i < 10000; i++) {
                    console.log('在滚了在滚了')
                }
                console.log('啊~~ 累坏了 QAQ')
            }
        }
    })
</script>
</html>

 

标签:触发,Vue,console,log,修饰符,事件
From: https://www.cnblogs.com/ximu1009/p/17770277.html

相关文章

  • 使用 Ant Design Vue 你可能会遇到的14个问题
    公司有一个新需求,在原来项目基础上开发,项目中使用AntDesignVue,版本是1.X,在此记录下遇到的问题;对于没有使用过或者使用程度不深的同学来说,希望可以帮助你在开发中遇到问题时有个参考。对于已经熟练使用的同学,可能这些问题都遇到过,欢迎大家在评论区补充。1、实现对下拉框显示......
  • Vue.js框架:vue3版本引入使用element-ui
    一、引入element-pluselement-ui只支持vue2,vue3需要引入element-plus进行使用,两个分别对应vue2和3两个版本,各自独立,无法跨级兼容。地址:https://element-plus.gitee.io/在vue3项目终端里使用以下命令引入该依赖:npminstallelement-plus--save二、修......
  • 原始翎风CLIENT8位 (4) frmMain 下的 OnIdle 事件
    原始翎风CLIENT8位frmMain下的OnIdle事件在frmMain的Create中Application.OnIdle:=AppOnIdle;//程序空闲事件的方法procedureAppOnIdle(Sender:TObject;varDone:Boolean);原型是procedureTForm1.ApplicationEvents1Idle(Sender:TObject;varDone:Boolea......
  • 基于SpringBoot与Vue技术的高校毕设管理平台-计算机毕业设计源码+LW文档
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器数据库部分表:DROPTABLEIFEXISTSbisheketi;/*!40101SET@saved_cs_client=@@characte......
  • vue 动态的class
    1.对象语法:适合较多的class名或动态的class:class="{'test-class':test}"//当test为true时,有test-class值2.数组语法:适合较少的class名:class="[a1,a2]"//表示有两个类名:a1、a2......
  • Vue验证码模块
    一个普通图形验证码的模块,使用方式如下: 导入模块importrandomfrom'@/util/VerificationCode'使用方式this.randomObj=random({id:'random',api:{url:'/api/getCode',headers:{'Content-Type':'applica......
  • 手撕Vue-实现事件相关指令
    经过上一篇文章的学习,实现了界面驱动数据更新,接下来实现一下其它相关的指令,比如事件相关的指令,v-on这个指令的使用频率还是很高的,所以我们先来实现这个指令。v-on的作用是什么,是不是可以给某一个元素绑定一个事件。紧接着了解了v-on的作用之后,我在example.html的结构代码......
  • uniCloud cms 自媒体资讯新闻文章应用系统 uniapp+uniCloud+AntDesignVue Life cms
    介绍LifeCMS是uniCloud+uni-app云端一体全套CMS/自媒体/资讯/新闻/文章应用系统,前台包含注册、登录(账号密码登录、短信登录、微信手机号快捷登录、微信一键登录、App手机一键登录、Apple登录)、文章列表、文章详情、搜索、广告、分享、评论、回复、点赞、收藏、用户中心、意见......
  • Vue进阶(幺玖玖):vue 输入框中按enter键实现搜索或表单提交
    在前端项目开发过程中,为优化用户体验,可考虑在用户输入查询条件后按回车键实现搜索效果。实现方法如下:el-input监听键盘按下状态得用@keyup.enter.native,如果是非el-input组件,可以直接用@keyup.enter。<[email protected]="search"v-model='form.searchAttr'></el......
  • vue实现点击复制功能(无需安装库)
     1.标签<buttonv-copy="text">复制文本</button>text是要复制的内容,在data函数中 2.在main.js中注册copy指令Vue.directive('copy',{bind:function(el,binding){el.$copy=function(){consttextarea=document.createElement('text......