IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue事件修饰符 -> 正文阅读

[JavaScript知识库]Vue事件修饰符

在vue中为我们提供了六种修饰符,分别是:

  • prevent:阻止默认事件

  • stop:阻止事件冒泡

  • once:事件只触发一次

  • capture:使用事件的捕获模式

  • self:只有event.target是当前操作的元素时才触发事件

  • passive:事件的默认行为立即执行,无需等待事件回调执行完毕

下面就具体来说说六种修饰符的具体用法

prevent

prevent方法是用来阻止默认事件。我们知道在html中有很多标签都有自己默认的事件。比如a标签点击时会跳转到目标链接,from里面的提交按钮点击后会将表单内容提交到目标地址等等,这些都属于默认事件。但是有时候我们不希望这些默认事件执行,那么这个时候我们就能用到prevent去阻止默认事件执行

//js中的用法,是通过event中的preventDefault()方法去阻止的
 var a=document.querySelector('a');
 a.onclick = function (e) {
 ? ? ? ?e.preventDefault()
 ?  }
//vue中用法
<a href="http://www.baidu.com" v-on:click.prevent='showmes'>百度</a>

stop

stop方法是用来阻止事件冒泡。我们在学习js时有了解到事件发生时会经历捕获与冒泡阶段,当父元素与子元素同时绑定了相同的事件时当触发子元素的事件时父元素的事件也会被触发,就会出现意料之外的效果,那么就需要我们进行设置避免这种意外产生,我们就需要用到stop这一修饰符

//js中,通过event中的stopPropagation()方法去阻止
var button=document.querySelector('button');
 button.onclick = function (e) {
 ? ? ?  e.stopPropagation()
 ?  }
//vue中使用stop
<div id="app">
 ? ? ?  <div v-on:click="showmes">
 ? ? ? ? ?  <button v-on:click.stop="showtip">点击</button>
 ? ? ?  </div>
 ?  </div>

因为冒泡是从最底层元素往上走,所以只要往最底层加stop就可以了。如果div上面还有一层同时也加了click事件那么div也要加stop修饰符

once

once用于实现绑定的事件只触发一次的效果,如一个提交按钮在页面打开后只允许提交一次,后面再提交就不再实现底层逻辑代码。

<button v-on:click.once="showtip">点击</button>

capture

capture用于事件的捕获模式。我们知道js是在冒泡阶段才开始处理事件,如果我们想使一个事件在捕获阶段就被执行处理就可以加上capture修饰符。如以下代码,在未加修饰符的情况下输出的应该是

我是按钮
我是div

而在div上加了修饰符后输出的结果便是

我是div
我是按钮
<body>
<div id="app">
 ? ? ?  <div v-on:click.capture="showmes">
 ? ? ? ? ?  <button v-on:click="showtip">点击</button>
 ? ? ?  </div>
 ?  </div>
</body>
<script type="text/javascript">
 ?  new Vue({
 ? ? ?  el: "#app",
 ? ? ?  methods: {
 ? ? ? ? ?  showmes() {
 ? ? ? ? ? ? ?  console.log('我是div')
 ? ? ? ? ?  },
 ? ? ? ? ?  showtip() {
 ? ? ? ? ? ? ?  console.log('我是按钮')
 ? ? ? ? ?  }
 ? ? ?  }
 ?  })
?

self

在前面的例子中我们有了解到在父、子元素绑定相同的事件时,当子元素上的事件被触发时父元素上的事件也会被触发,我们用了stop修饰符对其进行了阻止冒泡,而self也能达到这个效果。但是self是用event中的target与冒泡阶段中的各元素进行比较,只有元素与target一致才会执行事件。

<div v-on:click.self="showmes">
 ? ? ? ? ?  <button v-on:click="showtip">点击</button>
 ? ? ?  </div>
 ?  </div>

以上代码加入self后在点击button时div不再被执行,因为此时的target对应着button元素

passive

passive实现事件的默认行为立即执行,无需等待事件回调执行完毕。主要用于移动端的scroll事件,用来提高浏览器响应速度,提升用户体验。比如现在在代码中加入了scroll事件,在滚动页面时就去执行特别复杂或者用时长的事情,那么这个时候滚动条就会出现长时间的卡顿,直到代码执行完后滚动条才带着页面上移或下移,这会让人体验不好。为避免以上这种情况我们可以加上passive修饰符,不需要等到事件执行完后再滚动,而是先滚动再执行。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:59:25  更:2022-01-03 16:00:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:04:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码