Vue.js 事件绑定
1.事件监听
- v-on:eventName可以简写成@eventName
- 事件对象:在HTML中,事件参数为$event,但是即使不传递,在回调函数中也可以直接使用event读取
<div id="app">
<button v-on:click="test">点我</button>
<button v-on:click="test2('hello vue')">点我2</button>
<button v-on:click="test3($event)">点我3</button>
<button v-on:click="test4">点我4</button>
<button @click="test">点我</button>
<button @click="test2('hello vue')">点我2</button>
<button @click="test3($event)">点我3</button>
<button @click="test4">点我4</button>
</div>
methods: {
test() {
console.log('hi');
},
test2(content) {
console.log(content);
},
test3(event) {
console.log(event.target);
},
test4(){
//即使不传$event,在回调函数中也可以使用event这个参数
console.log(event.target.innerText);
}
}
- 常见的事件类型
| 事件 | 说明 |
|---|---|
| @click | 点击事件 |
| @keyup | 键盘事件 |
| @input | 输入框输入事件 |
| @change | 输入框change事件 |
| @transitionstart | 过渡开始事件 |
| @transitionend | 过渡结束事件 |
| @animationstart | 动画开始事件 |
| @animationend | 动画结束事件 |
2.事件修饰符
- 事件修饰符用来控制事件的冒泡和默认行为,常用共有几个:
| 修饰符 | 作用 |
|---|---|
| stop | 阻止事件冒泡 |
| prevent | 阻止默认事件 |
| self | 事件源是自身时才触发,通俗的话,冒泡传递过来的事件不会触发 |
| capture | 使用捕获机制 |
| once | 只会执行一次 |
| passive | - |
| native | 原生事件修饰符,用于监听原生HTML的事件 |
<!-- 阻止事件冒泡 -->
<div id="big" @click="test">
<div id="small" @click.stop="test2"></div>
</div>
<!-- 阻止默认事件,点击a链接不会发生跳转,只会执行test方法的代码 -->
<a href="https://www.baidu.com/" @click.prevent="test">百度一下</a>
- 修饰符可以串联
<a v-on:click.stop.prevent="doThat"></a>
3.按键修饰符
- 如果要监听某个具体的按键,可以使用按键码,例如:
<!-- 只有回车键按下的时候才会触发回调函数 -->
<!--使用按键码,回车键的keyCode是13 -->
<textarea @keyup.13="testKeyup"></textarea>
- 针对常见的按键,Vue预定义了按键修饰符
| 按键修饰符 | 对应按键 |
|---|---|
| enter | 回车 |
| tab | tab |
| delete | “删除”和“退格”键 |
| esc | esc |
| space | 空格 |
| up | 方向-上 |
| down | 方向-下 |
| left | 方向-左 |
| right | 方向-右 |
<!--使用按键修饰符 回车键的按键修饰符为enter -->
<textarea @keyup.enter="testKeyup"></textarea>
- 其余按键可以用按键码,或者自定义按键修饰
//自定义按键修饰(q的keyCode是81)
Vue.config.keyCodes.q=81
<input type="text" value="hello" @keyup.q="test">
<input type="text" value="hello" @keyup.81="test">
4.鼠标按钮修饰符(2.2.0 新增)
- 监听鼠标右键的点击事件
<button @click.right.prevent="throttle_click">点我</button>
- 监听鼠标中键的点击事件
<button @click.middle.prevent="throttle_click">点我</button>
5.系统修饰键
- 可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器
| 修饰键 | 对应按键 |
|---|---|
| ctrl | ctrl |
| alt | alt |
| shift | shift |
- 示例(不常用,不做测试,直接贴官方的示例)
<!-- Alt + C -->
<input v-on:keyup.alt.67="clear">
<!-- 按下Ctrl键 + Click -->
<div v-on:click.ctrl="doSomething">Do something</div>
- exact 修饰符 (2.5.0 新增):用来精确的系统修饰符组合触发的事件(不常用,不做测试,直接贴官方的示例)
<!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
<button v-on:click.ctrl="onClick">A</button>
<!-- 有且只有 Ctrl 被按下的时候才触发 -->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>
<!-- 没有任何系统修饰符被按下的时候才触发 -->
<button v-on:click.exact="onClick">A</button>
Vue.js 事件绑定的更多相关文章
- Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
Vue.js双向绑定的实现原理 解析 神奇的 Object.defineProperty 这个方法了不起啊..vue.js和avalon.js 都是通过它实现双向绑定的..而且Object.obser ...
- 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别
一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...
- js事件绑定细节说明
javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...
- js事件绑定的几种方式与on()、bind()的区别
版权声明:本文为博主原创文章,未经博主允许不得转载 一直不是很理解几种js事件绑定之间的区别与联系,今天百度了一下,在此做一总结: 1.如果只是简单的绑定一个事件,可以直接写在行内,点击执行一个函数, ...
- js课程 5-13 js事件绑定和鼠标事件注意事项有哪些
js课程 5-13 js事件绑定和鼠标事件注意事项有哪些 一.总结 一句话总结:js代码的灵魂就是改变标签的属性和样式,就这两种. 1.js触发改的东西是哪两样? 属性和样式 2.js如何让页面用标 ...
- vue.js样式绑定
vue.js样式绑定 class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 styl ...
- 10.Vue.js 样式绑定
Vue.js 样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处 ...
- DOM(原生js事件绑定)
一:原生js事件绑定 1.开关灯案例 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
一.在vue中,绑定事件,用v-on:事件类型, 如绑定一个点击事件, 我们可以这样子做 window.onload = function () { var c = new Vue({ el : 'b ...
- Vue.js双向绑定的实现原理
Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少 ...
随机推荐
- Flutter Forward 活动正式发布
2023 年 1 月 25 日,Flutter 团队将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播,敬请期待! 活动将于北京时间 1 月 25 日 22:30 开始 ...
- 系统编程-文件IO-dup和dup2系统调用
在linux下,一切皆文件. 文件描述符用于操作文件. 从shell中运行一个进程,默认会有3个文件描述符存在(0.1.2):)0表示标准输入,1表示标准输出,2表示标准错误. 一个进程当前有哪些打开 ...
- springboot起步依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...
- MobileNet V2中InvertedResidual实现
1.为了方便理解其本身结构,找到源码理解一下. 2.论文地址:http://arxiv.org/pdf/1801.04381.pdf 3.V2相比较V1增加了倒残差结构和线性瓶颈层.整个结构按照维度来 ...
- 墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB
分享嘉宾:张铭 腾讯数据库专家工程师,TcaplusDB产品负责人 整理:墨天轮社区 导读 大家好,我是腾讯TcaplusDB的产品负责人张铭,TcaplusDB是专为游戏设计的分布式 NoSQL 数 ...
- vue前端开发仿钉图系列(1)高德地图的使用详解
最近公司让参考钉图做图层模块相关的功能,很庆幸有机会细细研究地图相关的东西.因为手机端用的是高德地图,web端也使用高德地图.还是和往常一样,先贴上效果图. 步骤1.在高德开放平台注册信息,创建自己的 ...
- KubeSphere 社区双周报|2024.09.27-10.10
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 麻将计分器微信小程序的开发
如何开发微信小程序 前言 因为最近沉迷和朋友们一起下班去打麻将,他们推荐了一个计分的小程序,就不需要每局都转账或者用扑克牌记录了,但是这个小程序不仅打开有广告,各个页面都植入了广告,用起来十分不适. ...
- WinSCP 脚本实现将 jar 包一键上传 Ubuntu 并 docker 部署
准备 首先,在 Ubuntu 写一个.sh 脚本用于自动更新 jar 包的 docker 容器和镜像,然后在 Windows 写一个.bat 脚本用于上传 jar 包并运行.sh 脚本. deploy ...
- 华为云-云容器引擎(CCE)-高危操作及解决方案
业务部署或运行过程中,用户可能会触发不同层面的高危操作,导致不同程度上的业务故障.为了能够更好地帮助用户预估及避免操作风险,本文将从集群/节点维度出发,为用户展示哪些高危操作会导致怎样的后果,以及为用 ...