Vue:event对象

时间:2022-09-22 17:12:31

一、什么是event对象

event对象:代表的是事件的状态。比如获取当前的元素:e.Target。

二、事件冒泡

什么是事件冒泡呢?百度百科的解释如下:

当事件发生后,这个事件就要开始传播(从里到外或者从外向里)。为什么要传播呢?因为事件源本身(可能)并没有处理事件的能力,即处理事件的函数(方法)并未绑定在该事件源上。例如我们点击一个按钮时,就会产生一个click事件,但这个按钮本身可能不能处理这个事件,事件必须从这个按钮传播出去,从而到达能够处理这个事件的代码中(例如我们给按钮的onclick属性赋一个函数的名字,就是让这个函数去处理该按钮的click事件),或者按钮的父级绑定有事件函数,当该点击事件发生在按钮上,按钮本身并无处理事件函数,则传播到父级去处理。

可能下面的例子会更容易理解一些:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(){
console.log("我的div3");
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3">
我的div3
</div>
</div>
</div>
</div>
</body>
</html>

效果:

Vue:event对象

在上面的代码中,3个div分别绑定了3个不同的事件,点击"我的div3"的时候

那么该如何阻止事件冒泡呢?

1、原始JS中的处理方法

代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(e){
console.log("我的div3");
e.stopPropagation();
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3($event)">
我的div3
</div>
</div>
</div>
</div>
</body>
</html>

效果:

Vue:event对象

2、vue中处理方法

代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(e){
console.log("我的div3");
//e.stopPropagation();
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3($event)">
我的div3
</div>
<!--Vue中使用事件修饰符阻止冒泡-->
<div @click.stop="play3($event)">
我的div4
</div>
</div>
</div>
</div>
</body>
</html>

效果:

Vue:event对象

点击"我的div4"的时候会阻止事件冒泡,但点击"我的div3"的时候不会阻止事件冒泡。

三、事件的默认动作

看下面的代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(e){
console.log("我的div3");
//e.stopPropagation();
},
play4:function(e){
console.log("我是超链接");
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3($event)">
我的div3
</div>
<!--Vue中使用事件修饰符阻止冒泡-->
<div @click.stop="play3($event)">
我的div4
</div> <a href="http://www.baidu.com" @click="play4($event)">click</a>
</div>
</div>
</div>
</body>
</html>

效果:

点击“click”的时候会发现页面跳转到了百度,不会进入play4事件,如果调试代码想进入play4事件该如何处理呢?

1、使用原生JS处理

代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(e){
console.log("我的div3");
//e.stopPropagation();
},
play4:function(e){
console.log("我是超链接");
// 取消事件的默认动作
e.preventDefault();
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3($event)">
我的div3
</div>
<!--Vue中使用事件修饰符阻止冒泡-->
<div @click.stop="play3($event)">
我的div4
</div> <a href="http://www.baidu.com" @click="play4($event)">click</a>
</div>
</div>
</div>
</body>
</html>

效果:

Vue:event对象

这里在点击“click”的时候就不会进入百度首页了。这里没有处理冒泡,所以会触发play2和play1事件。

2、使用vue处理

代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件冒泡</title>
<!--引入vue.js-->
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
window.onload=function(){
// 构建vue实例
new Vue({
el:"#my",
data:{
},
// 方法
methods:{
play1:function(){
console.log("我的div1");
},
play2:function(){
console.log("我的div2");
},
play3:function(e){
console.log("我的div3");
//e.stopPropagation();
},
play4:function(e){
console.log("我是超链接");
// 取消事件的默认动作
//e.preventDefault();
}
}
})
}
</script>
</head>
<body>
<div id="my">
<div @click="play1">我的div1
<div @click="play2">我的div2
<div @click="play3($event)">
我的div3
</div>
<!--Vue中使用事件修饰符阻止冒泡-->
<div @click.stop="play3($event)">
我的div4
</div> <a href="http://www.baidu.com" @click="play4($event)">click</a>
<!--使用vue处理-->
<a href="http://www.baidu.com" @click.prevent.stop="play4($event)">click2</a>
</div>
</div>
</div>
</body>
</html>

效果:

Vue:event对象

Vue:event对象的更多相关文章

  1. vue&period;js - 奇怪的 event 对象

    好久都没有写点东西了, 前段时间工作搞得头大,真的就是一起加班到死了.废话不多说,写这篇文章是因为这次因为 event 对象闹了一个乌龙,以此总结一下. 一.event 对象 (一)事件的 event ...

  2. vue中如何使用event对象

    原文地址 一.event 对象 (一)事件的 event 对象 你说你是搞前端的,那么你肯定就知道事件,知道事件,你就肯定知道 event 对象吧?各种的库.框架多少都有针对 event 对象的处理. ...

  3. vue事件获取事件对象&comma;vue获取事件源&comma;vue event&period;currentTarget

    js的事件,如点击事件,可以直接用this获取事件对象,而jQuery可以使用$(this)来获取事件对象.vue必须借助事件的 event 对象 的 currentTarget 才能获取事件对象 v ...

  4. JS&colon;event对象下的target属性和取消冒泡事件

    1.target 通过获取DOM元素 var box = document.getElementById("box"); document.box.onclick = functi ...

  5. 一张图轻松搞懂javascript event对象的clientX&comma;offsetX&comma;screenX&comma;pageX区别

    总是会被javascript的event对象的clientX,offsetX,screenX,pageX 弄得头晕,于是决定做个图来区分一下(画得我手那个酸呀....) 先总结下区别: event.c ...

  6. 【前端】原生event对象和jquery event对象的区别

    标准DOM event对象转换成 jQuery event对象 $(event) jQuery event对象转换成 标准DOM event对象 event.originalEvent

  7. dom事件与event对象总结

    1 事件:就是文档或浏览器窗口中发生的一些特定的交互瞬间.    tips:js和xhtml的交互是通过当用户或浏览器操作网页时发生的事件来处理的. 1.1 事件流:即事件的顺序.        事件 ...

  8. html EVENT对象

    Event 对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! onabort 图像的加 ...

  9. HTML DOM Event对象

    我们通常把HTML DOM Event对象叫做Event事件 事件驱动模型 事件源:(触发事件的元素)事件源对象是指event对象 其封装了与事件相关的详细信息. 当事件发生时,只能在事件函数内部访问 ...

随机推荐

  1. JS判断有无网络(移动端)

    ar EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { ele ...

  2. WCF局域网内使用代理无法访问解决方法

    问题描述 在大部分事业单位上网都是需要使用代理的,前几天带着一个同事写的程序过来部署,部署以后各个客户端通过WCF相互通讯,那么其中一个地方在本地局域网测试是没有问题的. 后发现一部分是原因是由于代理 ...

  3. 基于Criminisi算法的栅格影像数据敏感地物隐藏

    栅格影像数据敏感地物伪装是指通过计算机智能识别与计算,将影像数据中的敏感地物进行识别与提取,将敏感地物智能替换成公共地物,如草地.森林.湖泊.公园等.但目前该技术并不成熟,同时栅格影像数据敏感地物伪装 ...

  4. RDIFramework&period;NET V2&period;7 Web版本升手风琴&plus;树型目录(2级&plus;)方法

    RDIFramework.NET V2.7 Web版本升手风琴+树型目录(2级+)方法 手风琴风格在Web应用非常的普遍,越来越多的Web应用都是采用这种方式来体现各个功能模块,传统的手风琴风格只支持 ...

  5. ASP&period;NET MVC 路由进阶&lpar;之一&rpar;

    1.  MVC框架下的WebForm页面. 我们在MVC项目下新建一个WebForm页面. 然后右键浏览,打开页面,如下图: 发现页面能够正常访问.ok,我们尝试改一下Global.asax.cs中的 ...

  6. ubuntu15&period;10升级时校验和不符的解决方法

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 # 错误 # 原因分析 进入/var/lib/apt/lists/partial看下吧: 看到了吧 ...

  7. codeforces 633C&period; Spy Syndrome 2 hash

    题目链接 C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  8. 粗浅看Struts2和Hibernate框架

    ----------------------------------------------------------------------------------------------[版权申明: ...

  9. Android ORC文字识别之识别身份证号等(附源码)

    项目地址https://github.com/979451341/OrcTest 我们说说实现这个项目已实现的功能,能够截图手机界面的某一块,将这个某一块图片的Bitmap传给tess-two的代码来 ...

  10. 【DWM1000】 code 解密9一 ANCHOR response poll message

    根据上面TAG发送的代码,我直接找到如下代码 case RTLS_DEMO_MSG_TAG_POLL: { if(inst->mode == LISTENER)                  ...