Vue.js笔记------事件
一、事件与事件流
1、事件与事件流
【事件】
JavaScript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性。常见的有加载事件、鼠标事件。
【事件流】
由于DOM是一个树结构,如果在父子节点绑定事件时候,当触发子节点的时候,就存在一个顺序问题,这就涉及到了事件流。页面触发一个事件时,会按照一定的顺序来响应事件,事件的响应过程为事件流。
【js的事件流三阶段】
事件捕捉阶段(capture phrase):事件开始由顶层对象触发,然后逐级向下传播,直到目标元素;
处于目标阶段(target phrase):处于绑定事件的元素上;
事件冒泡阶段(bubbling phrase):事件由具体的元素先接收,然后逐级向上传播,直到不具体的元素;(事件捕获是从上到下,而事件冒泡,是从下到上。)
2、事件冒泡与事件捕获
事件冒泡和事件捕获分别由微软和网景公司提出,是为了解决页面中事件流(事件发生顺序)的问题。
事件冒泡:
微软提出了名为事件冒泡(event bubbling)的事件流。
事件冒泡可以形象的比喻成把一颗石头投入水中,泡泡会一直从水底冒出水面。
也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。
因此在事件冒泡的概念下在button按钮发生click事件的顺序应该是button→div→body→html→document.
事件捕获:
网景提出另一种事件流名为事件捕获(event capturing)。
与事件冒泡相反,事件会从最外层开始发生,直到具体的元素。
因此在事件捕获的概念下在button按钮发生click事件的顺序应该是document→html→bodv→div→button。
后来W3C采用折中的方式,平息了网景和微软之间的战争,制定了统一的标准--先捕获在冒泡。
3、事件对象
用户界面事件:涉及到与BOM交互的通用浏览器事件。
load事件:在整个页面(包括所有外部资源如图片 JavaScript文件和CSS文件)加载完成后触发。
window.onload = function() {alert("页面加载完成")};
焦点事件:在元素获得或失去焦点时触发的事件。
鼠标事件:使用鼠标在页面上执行某些操作时触发的事件。
滚轮事件:使用鼠标滚轮时触发的事件。
输入事件:向文档中输入文本时触发的事件。
键盘事件:使用键盘在页面上执行某些操作时触发的事件,
输入法事件:使用某些输入法时触发的事件
二、事件绑定指令
计算正方形的面积
<body><div id="app"><!--方法一:以内联方式响应事件--><!--<button v-on:click="length++">改变边长</button>--><!--方法二:绑定方法处理事件--><button v-on:click="changeLength">改变边长</button>:<p>正方形的边长是{{ length }},面积是{{ area }}</p></div><script src="../../vue.js"></script><script>new Vue({el:'#app',data:{length:2},computed:{area(){return this.length*this.length},},methods:{changeLength(){this.length++}}})</script>
</body>
三、事件修饰符
1、事件修饰符使用
<div id="app" @click="divClick"><ul @click.self="ulClick"><!-- 事件修饰符 --><!-- .stop阻止事件冒泡 --><li @click="liClick">111</li><li>222</li><li>333</li></ul></div><script src="../../vue.js"></script><script>new Vue({el:'#app',methods:{divClick(){console.log('div');},ulClick(){console.log('ul');},liClick(evt){console.log('li');// JS原生写法:阻止事件冒泡// evt.stopPropagation()}}})</script>
2、事件修饰符详解
<body><!-- 事件修饰符event.preventDefault()/阻止状认行为或者event.stopPropogation()/阻止事件冒泡.以上方法而要处理D0M事件细节,代码繁项.为了解决这个问题,Vue.js提供了事件修饰符.修饰符是以点开头的指令后缀来表示的, --><!-- .stop阳止冒泡事件继续传播 --><a v-on:click.stop="doThis"></a><!-- .se1f当事件日标是当前元素自身时,触发事件 --><ul @click.self="ulClick"></ul><!-- .capture将原本默认的冒泡方式改为捕捉方式 --><!-- :prevent阻止事件默认行为 --><!--@submit.prevent提交事件不再重载顶面--><form v-on:submit.prevent="onSubmit"></form><!--.stop.prevent修饰符可以串联,既阻止冒泡又阻止默认行为.--><a v-on:click.stop.prevent="doThat"></a><!--只有修饰符--><form v-on:submit.prevent></form>
</body>
Vue.js笔记------事件相关推荐
- Vue.js笔记(一)
Vue.js笔记(一) 读书笔记 Vue.js介绍 内容概要 1.1 站在巨人的肩膀上 1.1.1 MVC模式 1.1.2 MVVM模式 2.1.3 异步执行脚本 2.1.4 动态加载脚本 2.2 行 ...
- Vue.js 笔记之 img src
固定路径(原始html) index.html如下,其中,引号""里面就是图片的路径地址 ```<img src="./assets/1.png"> ...
- 【笔记整理】vue.js笔记
### 准备开始 1:主要学习的是VUE,快速进入VUE让大家体会VUE的使用 2:webpack前端构建构建,前期铺垫基本使用,后面看到不晕 3:在做完项目以后,模 ...
- vue.js hover事件模拟
一.写在前面的废话 最近写毕设,前端用的 vue+element-ui,想实现hover()事件效果,但是怎么都没找到可以直接调用的,然后折腾了引入jquery,好一通折腾,千辛万苦引入成功,不再报 ...
- Vue.js 自定义事件
事件名 不同于组件和 prop,事件名不存在任何自动化的大小写转换.而是触发的事件名需要完全匹配监听这个事件所用的名称.举个例子,如果触发一个 camelCase 名字的事件: this.$emit( ...
- vue.js滚动条事件,防抖
防抖具体操作如下(下列步骤,和代码内注释相对应,可以方便查看) 在主体盒子的高度<=页面向下滚动的距离加屏幕高度的情况进行判断是否执行(在满足条件时新增数据) 根据 this.ok(默认为tru ...
- 模板字符串(vue.js笔记)
1..什么是模板字符串 ? 模板字符串:是允许嵌入表达式的字符串(可以使用多行字符串和字符串插值功能) 2.语法: 模板字符串用``号来放入 let str = `这是一个模板字符串`; 实例: &l ...
- Vue.js的基本使用 学习笔记
VUE的基本使用 学习笔记 一. 简介 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是 ...
- mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析
戳蓝字"CSDN云计算"关注我们哦! 作者 | 成全 责编 | 阿秃 转自 | 美团技术团队企业博客 前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开 ...
最新文章
- python起步输入-第 4 节 小Python 起步
- SQL2008 附加数据库提示 5120错误
- Android之GridLayoutManager.setSpanSizeLookup问题
- 公平锁非公平锁和可重入锁(递归锁)
- 排序算法(4)----快速排序
- 数据库迁移Flyway
- echart实现中国地图,点击可以显示各省信息
- Himall商城LinqHelper帮助类(2)
- 百度大脑活体检测+合成图鉴别面前,人脸“照片活化”黑产攻击一秒被擒
- aven class javax.xml.parsers.SecuritySupport12 cannot access its superclass javax.xml.parsers.Secur
- django建议入门-FYI
- FRM 5.1 现代投资组合理论
- HLS directive
- 医院信息系统基本功能规范---医疗保险接口功能规范
- 定积分的基本性质3 保序性
- 吉林全国计算机报名系统入口,http://ncre.jleea.com.cn吉林计算机等级考试报名系统入口...
- mediacodec mp4v2应用
- There is no Qt version assigned to project
- 数字藏品的交易平台有哪些 nft数字藏品
- Google Play邮件提示: 您必须声明您的广告 AD_ID 权限