我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue如何添加和移除事件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue如何添加和移除事件

这篇文章主要介绍“vue如何添加和移除事件”,在日常操作中,相信很多人在vue如何添加和移除事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何添加和移除事件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

vue添加和移除事件的方法:1、通过“addEventListener()”方法添加事件句柄;2、通过“removeEventListener()”方法移除事件句柄。

vue事件添加和移除

.removeEventListener() 方法要求我们向其传递与传递给 .addEventListener() 的函数 完全相同的监听器函数。

完全相同 意味着:

  • 具有相同的目标

  • 具有相同的类型

  • 并传递完全相同的监听器

定义和用法

removeEventListener() 方法用于移除由 addEventListener() 方法添加的事件句柄。

注意: 如果要移除事件句柄,addEventListener() 的执行函数必须使用外部函数,如上实例所示 (myFunction)。

匿名函数,类似 "document.removeEventListener("event", function(){ myScript });" 该事件是无法移除的。

例如:

 { name: 'Richard' } === { name: 'Richard' }复制代码

的答案会是false,因为他们属于不同的实体。

那么,什么样的可以成功移除呢?

function myEventListeningFunction() {
   console.log('howdy');
}

// 为 点击 事件添加一个监听器,来运行 `myEventListeningFunction` 函数
document.addEventListener('click', myEventListeningFunction);

// 立即移除 应该运行`myEventListeningFunction`函数的 点击 事件监听器
document.removeEventListener('click', myEventListeningFunction);复制代码

这个可以√,因为他们都指向myEventListeningFunction()这同一个方法。

而如果是

// 为 点击 事件添加一个监听器,来运行 `myEventListeningFunction` 函数
document.addEventListener('click', function myEventListeningFunction() {
   console.log('howdy');
});

// 立即移除 应该运行`myEventListeningFunction`函数的 点击 事件监听器
document.removeEventListener('click', function myEventListeningFunction() {
   console.log('howdy');
});复制代码

则不会成功移除×,因为他们的监听器函数并不是指向同一个。

事件传递有两种方式:冒泡与捕获。

事件传递定义了元素事件触发的顺序。 如果将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 “click” 事件先被触发呢?

在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。

在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。

addEventListener() 方法可以指定 “useCapture” 参数来设置传递类型:

addEventListener(event, function, useCapture);

默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递

removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:

element.removeEventListener("mousemove", myFunction);

浏览器兼容处理

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // 所有主流浏览器,除了 IE 8 及更早版本
   x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // IE 8 及更早版本
   x.attachEvent("onclick", myFunction);
}

IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持 addEventListener()removeEventListener() 方法。但是,对于这类浏览器版本可以使用 detachEvent() 方法来移除事件句柄:

element.attachEvent(event, function);
element.detachEvent(event, function);

vue的事件节流和移除

通常写法:

created() {
 window.addEventListener("scroll", this.throttle());
},
destroyed() {
 window.removeEventListener("scroll", this.throttle());
}
// methods
throttle() {
   let lastTime = new Date();
   let timer = null;
   return () => {
     let startTime = new Date();
     let remaining = 200 - (startTime - lastTime);
     clearTimeout(timer);
     if (startTime - lastTime > 200) {
       lastTime = startTime;
       this.scroll.call(this);
     } else {
       // 最后一次也执行
       timer = setTimeout(() => {
         this.scroll.call(this);
       }, remaining);
     }
   };
 }

vue如何添加和移除事件

都是错误的,呵呵。

问题的原因和“data为什么是函数”是一样的。节流函数throttle每次返回的函数是不一样的,所以,remove的函数和add的函数式不一样的。处理的方法就是对 节流 函数进行改造。(当然你也可以不节流就没有事了)

created() {   this.lastTime = new Date();   this.timer = null;   window.addEventListener("scroll", this.throttle);},destroyed() {   window.removeEventListener("scroll", this.throttle);}// methodsthrottle() {  let startTime = new Date();  let remaining = 200 - (startTime - this.lastTime);  clearTimeout(this.timer);  if (startTime - this.lastTime > 200) {    this.lastTime = startTime;    this.scroll.call(this);  } else {    // 最后一次也执行    this.timer = setTimeout(() => {      this.scroll.call(this);    }, remaining);  }}

事件操作和节流融合一起,所以要理解节流的实现原理。

到此,关于“vue如何添加和移除事件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue如何添加和移除事件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue如何添加和移除事件

这篇文章主要介绍“vue如何添加和移除事件”,在日常操作中,相信很多人在vue如何添加和移除事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue如何添加和移除事件”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-04

vue怎么添加和移除事件

vue添加和移除事件的方法:1、通过“addEventListener()”方法添加事件句柄;2、通过“removeEventListener()”方法移除事件句柄。
2023-05-14

Vue中怎么使用addEventListener添加事件和removeEventListener移除事件

今天小编给大家分享一下Vue中怎么使用addEventListener添加事件和removeEventListener移除事件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读
2023-07-04

jquery如何添加类和移除类

这篇文章主要讲解了“jquery如何添加类和移除类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery如何添加类和移除类”吧!jquery中可用addClass()和removeCla
2023-07-04

vue-table如何实现添加和删除

这篇文章主要介绍了vue-table如何实现添加和删除,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下一.代码
2023-06-15

Vue如何给组件添加点击事件 @click.native

这篇文章主要介绍了Vue如何给组件添加点击事件 @click.native,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

dreamweaver文件面板如何添加删除或移动文件

小编给大家分享一下dreamweaver文件面板如何添加删除或移动文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在dreamweaver文件面板中可以打开文件、更改文件名;添加、移动或删除文件;或者在进行更改后刷新“
2023-06-08

Git中如何添加和删除文件

Git 是一款非常普遍和流行的版本控制工具,使用它可以轻松地跟踪并管理项目的变更。在实际应用过程中,常常会出现新增或删除文件的情况,接下来我们将详细介绍 Git 中如何添加和删除文件。添加文件添加文件的方式非常简单,只需使用 Git 的 a
2023-10-22

jQuery如何移除事件监听?

移除jQuery事件监听了解如何使用jQuery移除DOM元素上的事件监听,以优化性能和实现复杂的事件处理逻辑。本文介绍了off()、unbind()和die()方法,以及如何移除所有事件监听、基于事件句柄或数据属性移除监听,以及处理委托事件监听。
jQuery如何移除事件监听?
2024-04-08

如何移除css的hover事件

这篇“如何移除css的hover事件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何移除css的hover事件”文章吧。移
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录