Vue 事件、事件冒泡和事件捕获
vue 事件、事件冒泡、事件捕获和终止事件冒泡
目录
什么是事件
JavaScript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性。
常见的有加载事件、鼠标事件
事件的三阶段
- 事件捕捉阶段(capture phrase): 先由文档的根节点document往事件触发对象,从外向内捕获事件对象
- 处于目标阶段(target phrase): 到达目标事件位置,触发事件本身的程序内容
- 事件冒 泡阶段(bubbling phrase): 从目标事件位置往文档的根节点方向回溯,从内向外冒泡事件对象
事件冒泡和事件捕获分别由微软共色和网景公司提出,是为了解决页面中事件流(事件发生顺序)的问题
事件冒泡
事件冒泡是微软提出的事件流,可以形象的比喻为烧开的热水,泡泡会从底部向上冒出水面(即时间会从最内从的元素开始发生,一直向上传播,直到document对象)
故在事件冒泡的概念下载button按钮发生click事件的顺序应该是 button→div→html→doncument
事件冒泡案例
//div样式 <style> .father { width: 200px; height: 200px; background: red; } .son{ width: 100px; height: 100px; background: green; } </style> </head> <body> //绑定点击事件 <div id="app"> <div class="father" @click="fatherfun">父 <div class="son" @click="sonfun">子</div> </div> </div> <script src="../../../vue.js"></script> <script> new Vue({ el:'#app', data:{}, // 事件 methods:{ fatherfun(){ console.log('fatherdiv'); }, sonfun(){ console.log('sondiv'); }, }, }) </script> </body>
效果:
事件捕获
网景对此提出另一种名为事件捕获的事件流,与事件冒泡相反,事件从最外层发生,直到具体的元素
故在事件捕获的概念下button按钮发生click时间顺序应该是document →html→body→div → button
事件捕获案例:
点击box2的结果
终止事件冒泡
在相应的函数中加上event.stopPropagation()
这是阻止事件的冒泡方法,不让事件向documen上蔓延。
实例1
methods:{ fatherfun(){ console.log('fatherdiv'); event.stopPropagation() }, sonfun(){ console.log('sondiv'); event.stopPropagation() }, },
实例2 用vue的方式终止事件冒泡
<body> <div id="app"> <div class="father" @click.stop="fatherfun">父 <div class="son" @click.stop="sonfun">子</div> </div> </div>
结果 成功终止冒泡
事件方法
<!-- @click:单击事件 -->
<!-- @dbclick:双击事件 -->
<!-- @focus当元素获取焦点时出发事件 -->
<!-- 焦点元素,可以用tab键算中,拥有tabindex属性,
如a,input,btn等表单元素都算焦点元素,
而获取焦点,就是激活表单字段,使其可以触发键盘事件 -->
<!-- @blur:当元素失去焦点时触发的事件 -->
<!-- @submit:当提交表单时出发的事件 -->
<!-- @keydown:当键盘被按下时触发事件 -->
<!-- @keyup:当键盘松开时触发的事件 -->
<!-- 与鼠标相关的事件 -->
<!-- @mouse enter:当鼠标指针进入(或者穿过)指定元素时会触发事件 -->
<!-- @mouse down:当鼠标指针进入指定元素,按下左键点击时会触发事件 -->
<!-- @mouse up:当鼠标指针进入指定元素,并且松开左键时会触发事件 -->
<!-- @mouse leave:当鼠标指针离开指定元素时会触发事件 -->
<!-- @mouse move:当鼠标指针在指定元素中移动时会触发事件 -->
<!-- @mouse out:当鼠标指针在离开指定元素包括其子元素时会触发事件 -->
<!-- @mouse over:当鼠标指针悬停指定元素中移动时会触发事件 -->
更多推荐
所有评论(0)