一、事件与事件流

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笔记------事件相关推荐

  1. Vue.js笔记(一)

    Vue.js笔记(一) 读书笔记 Vue.js介绍 内容概要 1.1 站在巨人的肩膀上 1.1.1 MVC模式 1.1.2 MVVM模式 2.1.3 异步执行脚本 2.1.4 动态加载脚本 2.2 行 ...

  2. Vue.js 笔记之 img src

    固定路径(原始html) index.html如下,其中,引号""里面就是图片的路径地址 ```<img src="./assets/1.png"> ...

  3. 【笔记整理】vue.js笔记

    ### 准备开始          1:主要学习的是VUE,快速进入VUE让大家体会VUE的使用     2:webpack前端构建构建,前期铺垫基本使用,后面看到不晕     3:在做完项目以后,模 ...

  4. vue.js hover事件模拟

    一.写在前面的废话 最近写毕设,前端用的 vue+element-ui,想实现hover()事件效果,但是怎么都没找到可以直接调用的,然后折腾了引入jquery,好一通折腾,千辛万苦引入成功,不再报 ...

  5. Vue.js 自定义事件

    事件名 不同于组件和 prop,事件名不存在任何自动化的大小写转换.而是触发的事件名需要完全匹配监听这个事件所用的名称.举个例子,如果触发一个 camelCase 名字的事件: this.$emit( ...

  6. vue.js滚动条事件,防抖

    防抖具体操作如下(下列步骤,和代码内注释相对应,可以方便查看) 在主体盒子的高度<=页面向下滚动的距离加屏幕高度的情况进行判断是否执行(在满足条件时新增数据) 根据 this.ok(默认为tru ...

  7. 模板字符串(vue.js笔记)

    1..什么是模板字符串 ? 模板字符串:是允许嵌入表达式的字符串(可以使用多行字符串和字符串插值功能) 2.语法: 模板字符串用``号来放入 let str = `这是一个模板字符串`; 实例: &l ...

  8. Vue.js的基本使用 学习笔记

    VUE的基本使用 学习笔记 一. 简介 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是 ...

  9. mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 成全 责编 | 阿秃 转自 | 美团技术团队企业博客 前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开 ...

最新文章

  1. python起步输入-第 4 节 小Python 起步
  2. SQL2008 附加数据库提示 5120错误
  3. Android之GridLayoutManager.setSpanSizeLookup问题
  4. 公平锁非公平锁和可重入锁(递归锁)
  5. 排序算法(4)----快速排序
  6. 数据库迁移Flyway
  7. echart实现中国地图,点击可以显示各省信息
  8. Himall商城LinqHelper帮助类(2)
  9. 百度大脑活体检测+合成图鉴别面前,人脸“照片活化”黑产攻击一秒被擒
  10. aven class javax.xml.parsers.SecuritySupport12 cannot access its superclass javax.xml.parsers.Secur
  11. django建议入门-FYI
  12. FRM 5.1 现代投资组合理论
  13. HLS directive
  14. 医院信息系统基本功能规范---医疗保险接口功能规范
  15. 定积分的基本性质3 保序性
  16. 吉林全国计算机报名系统入口,http://ncre.jleea.com.cn吉林计算机等级考试报名系统入口...
  17. mediacodec mp4v2应用
  18. There is no Qt version assigned to project
  19. 数字藏品的交易平台有哪些 nft数字藏品
  20. Google Play邮件提示: 您必须声明您的广告 AD_ID 权限

热门文章

  1. 校园网未能找到pppoe服务器,校园网常见问题解决建议
  2. js判断两个数组中是否含有相同值
  3. C++ 之try-except
  4. 合并数组对象中相同的属性值
  5. 【Figma学习】操作工具及其使用一
  6. 2021年加密货币犯罪报告
  7. 信息安全工程师----五天修炼(第五章 5.1常见的网络安全威胁)
  8. jdk8两个List取交集、差集、并集(不去重)、并集(去重)
  9. HTML+CSS 京东首页
  10. 一篇科学的排队指南(简单线性回归和时间序列模型的应用)