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双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少 ...
随机推荐
- Angular – ESLint
介绍 Angular wrap 了一层 ESLint, 定义了一些 best practice guide. 这篇说说如何 setup 它. 这个 ESLint 并不是 under Angular T ...
- CSS & JS Effect – Image Overlay
介绍 一张背景图, 一行写字, 一层黑影 (Image Overlay), 如果没有做黑影, 字的颜色容易和图片撞, contrast 就会很烂. HTML 结构 <div class=&quo ...
- SQL Server – Concurrency 并发控制
前言 以前写过相关的, 但这篇主要讲一下概念. 帮助理解 Entity Framework with MySQL 学习笔记一(乐观并发) Asp.net core 学习笔记 ( ef core tra ...
- [TK] 理想的正方形
题目描述 有一个整数组成的矩阵,现请你从中找出一个指定边长的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 题目分析 其实这道题和滑动窗口很像,而滑动窗口使用优先队列解决. 我们都知道优先队 ...
- Springboot自定义Prometheus采集指标
添加依赖 <!--增加Prometheus依赖--> <dependency> <groupId>org.springframework.boot</grou ...
- LeetCode 218. 天际线问题 (扫描线+优先队列)
扫描线+优先队列 https://leetcode-cn.com/problems/the-skyline-problem/solution/tian-ji-xian-wen-ti-by-leetco ...
- USB硬件特性(速度、名称、供电)
USB传输速度 USB1.0版本,USB LS(Low Speed低速),速度1.5Mbps. USB1.1版本,USB FS(Full Speed全速),速度12Mbps. USB2.0版本,USB ...
- seaborn.lmplot详解
官方文档 首先我们要知道,lmplot是用来绘制回归图的. 让我们来看看他的API: seaborn.lmplot(x, y, data, hue=None, col=None, row=None, ...
- electron 菜单选项 - 隐藏,设置菜单
隐藏菜单 const { app, Menu, session } = require('electron'); /*隐藏electron的菜单栏*/ Menu.setApplicationMenu( ...
- Kali Linux 各版本开启ssh 服务
Kali Linux 各版本开启ssh 服务 2019版kali Linux SSH链接办法 修改kali关于SSH服务默认配置并重启SSH服务,步骤如下: 打开sshd_config文件 leafp ...