Vue学习笔记(三)Vue事件处理

【零基础入门VUE】VueJS - 概述 不会对 DOM 进行更改,而是创建 DOM 的副本,该副本以 JavaScript 数据结构的形式存在。最终的更改会更新到真实的 DOM,用户将看到它的变化。随后,对两个 JavaScript 对象进行比较,并在真实 DOM 中更新最终的更改。Ember 添加了 glimmer 渲染引擎,旨在提高重新渲染性能,这与使用虚拟 DOM 的 VueJS 和 React 是类似的概念。随着时间的推移,淘汰赛的发展速度已经放缓。VueJS 继承了 Angular 和 React 的优点,并构建了一个强大的库。 阅读详情

Vue中使用v-on来监听DOM事件执行JavaScript代码

直接监听事件


使用Vue时在v-on后写上监听的事件,其后可以跟着JavaScript代码,当监听的事件被触发时,就会执行其后的JavaScript代码

<div id="app">
    <button v-on:click="count++">增加</button>
    <p>{{count}}</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            count: 0
        }
    });
</script>

这里点击按钮count的数值就会不停增加

v-on的缩写


v-on可以使用@来代替

比如上面的代码可以改为

<button @click="count++">增加</button>

调用方法处理


有时候事件对应的操作太繁多,不可能全部都写在html里面,这个时候调用方法是一个好的选择

<div id="app">
    <button @click="fn">按钮</button>
    <!-- 等同于 -->
    <button @click="fn()">按钮</button>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            fn() {
                alert('this is vue');
            }
        }
    });
</script>

调用方法时如果没有参数,可以不加括号。

对于有参方法,可以直接在内联中传入参数

<div id="app">
    <button @click="fn('hello')">hello</button>
    <button @click="fn('hi')">hi</button>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            fn(val) {
                alert(val);
            }
        }
    });
</script>

如果要在内联中访问DOM原生事件,可以使用$event作为参数传入方法。

<div id="app">
    <button @click="fn($event)">获取鼠标位置</button>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            fn(event) {
                alert(event.clientX);
            }
        }
    });
</script>

事件修饰符


事件修饰符是用于对事件的处理,比如阻止冒泡,阻止默认行为,改为捕获的监听等,虽然这些内容也可以在函数内部处理,但是使用事件修饰符可以使得函数内部只需要处理相应的逻辑处理,不用去考虑DOM的内容。

  1. stop:阻止事件的冒泡
  2. prevent:阻止事件的默认行为
  3. capture:添加事件监听器时使用捕获模式
  4. self:事件只有在元素本身触发才有效,子元素中触发无效
  5. once:事件只会触发一次

stop

原本在冒泡的事件监听中,触发子元素的事件会向上触发父元素的事件,这里点击span标签本应触发父元素的点击事件,但是使用stop修饰符后就被阻止了。

<div id="app">
    <div @click="div">div
        <span @click.stop="span">span</span>  //  只弹出一个alert
    </div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            div() {
                alert('div')
            },
            span() {
                alert('span')
            }
        }
    });
</script>

prevent

这里在点击a标签后本应该触发事件后跳转到百度页面的,但是加上了prevent后就没有跳转,默认事件被阻止了。submit的页面刷新也能被prevent阻止。

<div id="app">
    <a href="http://www.baidu.com" @click.prevent="fn">超链接被阻止</a>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            fn() {
                alert('你是离不开这里的')
            }
        }
    });
</script>

capture

这里点击span标签本应先弹出‘div’后弹出‘span’,但是使用了capture变成了事件捕获之后,就会先弹出‘span’后弹出‘div’

<div id="app">
    <div @click.capture="div">div
        <span @click="span">span</span>
    </div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            div() {
                alert('div')
            },
            span() {
                alert('span')
            }
        }
    });
</script>

self

这里点击span标签时由于事件冒泡,div1和div2两个点击事件都应该被触发,但是由于div2使用了self修饰符,所以通过子元素的冒泡不会触发其点击事件,所以点击span标签会弹出“span”和“div1”两个框,而点击div2时会弹出“div2”和“div1”两个框

<div id="app" @click="div1">
    <div @click.self="div2">div2
        <span @click="span">span</span>
    </div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            div1() {
                alert('div1')
            },
            div2() {
                alert('div2')
            },
            span() {
                alert('span')
            }
        }
    });
</script>

once

这里点击按钮msg本应一直上升,但是加上了once后,只会执行一次,即只是加到1就停止了

<div id="app">
    <span>{{msg}}</span>
    <button @click.once="add">增加</button>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: 0
        },
        methods: {
            add() {
                this.msg++;
            }
        }
    });
</script>

按键修饰符


keyCode监听

通过在事件后面使用.加上keyCode可以监测键值

<div id="app">
    <input type="text" v-model="msg" @keyup.13="fn">
    <!-- 回车键的键码为13 -->
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: 0
        },
        methods: {
            fn() {
                console.log(this.msg);
            }
        }
    });
</script>

这里在本文框中按下回车键就会触发fn方法

按键别名监听

记住所有keyCode很麻烦,在Vue中提供了按键别名

  • enter
  • tab
  • delete (捕获 “删除” 和 “退格” 键)
  • esc
  • space
  • up
  • down
  • left
  • right

下面这段代码使用按键别名enter,和上面使用keyCode13结果是一样的。

<div id="app">
    <input type="text" v-model="msg" @keyup.enter="fn">
    <!-- 回车键的键码为13 -->
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            msg: 0
        },
        methods: {
            fn() {
                console.log(this.msg);
            }
        }
    });
</script>

自定义按键别名

除了使用Vue提供的按键别名外,我们也能自己定义按键别名,使用Vue.config.keyCodes就能在全局定义按键别名。

下面这段代码将f2的键码对应定义了别名f2,当按下f2键时就会触发fn方法。

<div id="app">
    <input type="text" v-model="msg" @keyup.f2="fn">
</div>
<script>
    Vue.config.keyCodes.f2 = 113; // f2键码为113
    let vm = new Vue({
        el: "#app",
        data: {
            msg: 0
        },
        methods: {
            fn() {
                console.log(this.msg);
            }
        }
    });
</script>

 

Vue2(11)事件处理学习笔记 Vue2的事件处理功能非常强大和灵活,通过v-on指令和多种修饰符,可以轻松地监听和处理DOM事件。在开发过程中,合理地使用事件修饰符和按键修饰符,可以简化事件处理逻辑,提高代码的可读性和可维护性。同时,通过事件处理程序的传参功能,可以实现更加复杂和灵活的事件处理需求。 阅读详情

相关推荐

quartus 13.1常见报错解决方法

在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。 一、编译出现lience错误 在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。 如图所示有两种破解器,分别对应32位和64位的软件,大部

肥宅的博客 3万+

span标签去除点击事件

span标签去除点击事件 //设置点击事件不可用 $("#verificode").css(“pointer-events”, “none”); //点击事件可用 $("#verificode").css(“pointer-events”, “auto”);

fgndsg的博客 1354

Doris副本修复实战:从状态机到手动修复的完整指南

在分布式数据库系统中,多副本机制是实现高可用与数据一致性的核心技术。其原理是通过在不同节点存储数据的多个拷贝,确保部分节点故障时服务仍可继续。这项技术的核心价值在于保障数据可靠性,并支撑在线分析处理(OLAP)等对数据一致性要求高的应用场景。当副本出现损坏、丢失或版本不一致时,系统通常依赖自动修复机制,但在元数据损坏、多副本同时故障等复杂场景下,自动修复可能失效,需要深入理解副本状态机并借助手动工具介入。本文将聚焦Doris数据库,解析Tablet副本状态流转(如BAD、VERSION_ERROR),并详细

weixin_32288959的博客 468

Vue -- 如何在 span 标签上实现一个点击事件

使用 JQuery 时,需要通过下述方式为选中的页面元素绑定单击事件 $(".myclass").on("click" , function(){ } 但在 Vue 中则不必这么麻烦,如果想为某一个 span 标签绑定 click 单击事件,只需 <div style="display:flex;position:relative;"> <span @click="clickFunc">Test</span> </div> func...

诚的博客 1万+

别再死磕AUTOSAR文档了!手把手教你用ISOLAR-A配置BswM模块(附实战流程图)

本文通过Vector ISOLAR-A工具实战演示AUTOSAR BswM模块的配置流程,帮助工程师快速掌握基础软件模式管理。从环境准备到模式仲裁规则配置,再到动作列表实现,详细讲解每个步骤,并提供常见问题排查和高级优化技巧,大幅提升开发效率。

weixin_42542669的博客 251

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?此外,用户还可以选择将接收到的图片、视频和文件保存到指定的文件夹中。‌用户可以在微信设置中调整这一设置。

qq_15963745的博客 5095

vue 将{}之间的字符串替换成span标签并加上点击事件

vue 将{}之间的字符串替换成span标签并加上点击事件

Lucky铂爵 1170

三极管电平转换电路

摘要:本文介绍了三种基于三极管的电平转换电路方案。第一种采用双NPN三极管实现3.3V转5V反相电平转换;第二种使用单NPN三极管完成5V转3.3V同相转换;第三种利用单PNP三极管实现3.3V转5V同相转换。各方案均通过三极管的开关特性配合电阻网络实现电压域适配,具有结构简单、成本低的优点,适用于不同逻辑电平设备(如MCU与外设)间的信号兼容传输。文中详细分析了各电路的工作原理、元件作用和特性,并通过Multisim仿真验证了其功能有效性。

XU157303764的博客 1858

vue2/vue3中el-tree中,当disabled无效的时候,设置禁用节点

el-tree的禁用

weixin_56205895的博客 5140

【软件测试】- 公有云、私有云、混合云简介以及如何在公有云与私有云上分别搭建测试环境

公有云、私有云以及混合云是目前云计算领域的三种主要模式。它们之间的区别主要在于部署方式、数据访问和管理控制的不同。在阿里云或腾讯云上使用 Kubernetes 和 Docker 搭建测试环境可以提供高度的可伸缩性和灵活性。这样的环境非常适合于需要在多种配置和条件下进行测试的复杂应用。通过云服务提供的工具和服务,可以轻松管理和监控整个测试过程。在云服务上搭建测试环境涉及选择合适的云提供商、配置云资源、安装和设置所需软件等步骤。### 1. 选择云服务提供商。

weixin_46453070的博客 2345

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2103

vue学习笔记三(监听和事件处理小案例)

vue监听watch Vue.js 监听属性 watch,可以通过 watch 来响应数据的变化,使用这个属性,可以监视 data 中指定数据的变化,然后触发这个 watch 中对应的 function 处理函数 案例一:实现加减乘除计算器功能 在第一个表单中输入数字,然后通过下拉列表选择要进行的运算,然后再第二个表单中输入数字后,结果便会自动显示再最后一个表单中 <!DOCTYPE html> <html> <head> <meta charset="ut

清风无虑skr的博客 547

YOLOv8改进 | Conv篇:基于FasterBlock与C2f结构的二次创新,参数量下降70万【附保姆级代码】

通过引入FasterBlock二次创新C2f结构,我们成功地对YOLOv8模型进行了优化,显著降低了其参数量,并提升了推理速度,而精度保持不变甚至有所提升。该模型在多个实际应用场景中展现出了优异的性能,尤其是在嵌入式设备、移动端和自动驾驶等领域,具有广泛的应用潜力。未来的研究将进一步优化模型结构,探索更多的应用场景,为目标检测技术的发展做出贡献。

一键难忘的博客 3215

Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决

这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题 所需的所有文件,链接:https://pan.baidu.com/s/19GWDS_7GodIdFBUO0eTDAg 提取码:2yvc 一、vue.js插件下载 下载地址:vue.js插件下载; 点击进入Vue官网即可下载,共有两种版本的插件(开发版本:vue.js,生产版本:vue.main.js),建议使用开发版本。开发版本有更多的错误信息提示和调试,文件较大,生产办文件小但是很多提示不全,解决开发

goog_man的博客 6万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Vue3/VueJS技术学习笔记

Vue3/VueJS技术学习笔记 1、第一个Vue.js应用程序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello-vue</title> <!--导入Vue.js,开发环境版本,包含了有帮助的命令行警告--> <script src="https://cdn.jsdelivr.net/npm/

microvulome的博客 1430

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Vue.js入门系列(三):深入理解Vue.js中的事件处理

Vue.js 允许我们通过全局配置来自定义按键修饰符的别名,使得事件处理更加直观。});

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

ranran0306的博客 9738

vue和vuejs区别_D3vue-VueJS的D3插件

vue和vuejs区别 D3vue (D3vue) D3 integration with Vue.js. 与Vue.js的D3集成。 View demo 查看演示 Download Source 下载源 d3vue is a plugin for VueJS 2 that allows you to take data from your Vue instance and bind ...

cuk5340的博客 3290

Vue事件处理

主要总结了Vue事件处理的绑定事件、修饰符的使用、自定义事件以及Vue2和Vue3的差异等内容。

热爱前端的大宝同学。 1555

VueJS WebPack separating javascript from vue

VueJS 与 Webpack:将 JavaScript 从 Vue 文件中分离

suiusoar 1370

Vuejs事件处理

index.html <div id="app"> <p>{{title}}</p> <ul> <li v-for='todo in todos'>{{todo}}</li> </ul> <div> <!-- v-mo...

张睿的博客 300

探索VueJS核心:tiny-vue,你的源码学习伙伴

探索VueJS核心:tiny-vue,你的源码学习伙伴 项目简介 tiny-vue 是一个精心简化版的VueJS实现,专为初学者设计,帮助理解VueJS v1.0.28的核心概念。这个项目的创建者为了帮助那些在复杂源码中迷失方向的新手,将VueJS的核心功能拆解成更易于理解的部分,让你能够逐步深入到响应式数据处理和指令系统的奥秘之中。 项目技术分析 tiny-vue 主要分为两个关键部分:响应式S...

gitblog_00012的博客 638

探索Vue.js的无限可能 —— vuejs-challenges

挑战自我,共同成长,Vue.js挑战等你来战!

2401_83063795的博客 2882

Vuejs 使用 vue-native-websocket

安装 yarn add vue-native-websocket # or npm install vue-native-websocket --save 使用 一、配置 通过URL字符串自动进行websocket连接 import VueNativeSock from 'vue-native-websocket' Vue.use(VueNativeSock, 'ws://localhost:9090') 二、连接实例 1、自动连接 启用ws自动重新连接(适用于整个系统多方面应用websocket

Alive_tree的博客 1万+

Vue|事件处理

简单花点时间了解一下Vue的事件处理,事件是在编程时系统内发生的动作或者发生的事情,系统响应事件后,如果需要,你可以某种方式对事件作出回应。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1976
上一篇: Vue学习笔记(二)Vue插值
下一篇: Vue学习笔记(四)Vue指令
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值