首页 > 其他分享 >『VUE』10. 事件修饰符(详细图文注释)

『VUE』10. 事件修饰符(详细图文注释)

时间:2024-04-04 20:58:52浏览次数:14  
标签:10 VUE 禁用 修饰符 点击 事件 跳转 div

目录


欢迎关注 『VUE』 专栏,持续更新中
欢迎关注 『VUE』 专栏,持续更新中

什么是事件修饰符?

vue

在 Vue.js 中,事件修饰符是一种用于处理 DOM 事件的特殊指令,可以在事件处理程序中提供额外的控制或功能。以下是一些常用的 Vue.js 事件修饰符:

.stop:阻止事件继续传播,即调用 event.stopPropagation()。

<button @click.stop="handleClick">Click Me</button>

.prevent:阻止事件的默认行为,即调用 event.preventDefault()。

<form @submit.prevent="handleSubmit">Submit Form</form>

.capture:使用事件捕获模式,即在捕获阶段处理事件。

<div @click.capture="handleClick">Click Me</div>

.self:只有当事件是从元素自身触发时才会触发处理函数,而不是冒泡过程中的其他元素。

<div @click.self="handleClick">Click Me</div>

.once:事件只会触发一次,之后移除事件监听器。

<button @click.once="handleClick">Click Me Once</button>

.passive:指示浏览器不应该阻止事件的默认行为,可以提高页面滚动性能。

<div @touchstart.passive="handleTouchStart">Touch Me</div>

js

  • event.preventDefault() :调用 event.preventDefault() 方法会告诉浏览器取消事件的默认行为。比如,在点击链接时,如果你调用了 event.preventDefault(),那么链接不会导航到新的页面

  • event.stopPropagation():
    这个方法用于停止事件在 DOM 树中的传播,阻止事件的进一步传播或冒泡。如果一个父元素和子元素都绑定了相同类型的事件,并且事件在子元素上触发后还要继续冒泡到父元素,你可以在子元素上调用 event.stopPropagation() 来阻止这种冒泡行为。

  • event.stopImmediatePropagation():
    这个方法与 event.stopPropagation() 类似,但是它不仅停止事件传播,还阻止任何后续事件处理程序被调用。

  • return false:
    在某些情况下,可以在事件处理函数中使用 return false 来同时阻止默认行为和停止事件传播。例如,在 HTML 中使用 οnclick=“return false;” 可以达到这个效果。


不使用修饰符 原生js实现禁用事件对象的默认事件

我们点击网页上的跳转按钮后会跳转到百度,也会控制台中打印"点击了",使用e.preventDefault()就可以禁用网页跳转.

EventDemo6.vue

<template>
  <h3>事件修饰符</h3>
  <a @click="eventStyle" href="www.baidu.com">跳转</a>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    eventStyle(e) {
      e.preventDefault(); //禁用控件本身默认的事件,比如说我们a标签的跳转到百度事件会被禁用
      console.log("点击了");
    },
  },
};
</script>


点击了这么多下还在原来的网页.
在这里插入图片描述


使用事件修饰符 .prevent

注释了// e.preventDefault(),但是通过@click.prevent="eventStyle"的方式设置了禁用默认事件.

EventDemo6.vue

<template>
  <h3>事件修饰符</h3>
  <a @click.prevent="eventStyle" href="www.baidu.com">跳转</a>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    eventStyle(e) {
      //   e.preventDefault(); //禁用控件本身默认的事件,比如说我们a标签的跳转到百度事件会被禁用
      console.log("点击了");
    },
  },
};
</script>


使用事件修饰符 .stop

  • 不使用.stop,先触发了p然后因为p在div中,点击p触发之后还会触发div的事件,顺序是p-div的冒泡顺序
    在这里插入图片描述
<template>
  <h3>事件修饰符</h3>
  <a @click.prevent="eventStyle" href="www.baidu.com">跳转</a>

  <div @click="clickDiv">
    <p @click="clickP">点我先触发p还是div呢?</p>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    eventStyle(e) {
      //   e.preventDefault(); //禁用控件本身默认的事件,比如说我们a标签的跳转到百度事件会被禁用
      console.log("点击了");
    },
    clickDiv() {
      console.log("点击了div");
    },
    clickP() {
      console.log("点击了p");
    },
  },
};
</script>

  • 使用了.stop 禁用了冒泡,只触发了p不会触发父节点div的事件
    在这里插入图片描述
<template>
  <h3>事件修饰符</h3>
  <a @click.prevent="eventStyle" href="www.baidu.com">跳转</a>

  <div @click="clickDiv">
    <p @click.stop="clickP">点我先触发p还是div呢?</p>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    eventStyle(e) {
      //   e.preventDefault(); //禁用控件本身默认的事件,比如说我们a标签的跳转到百度事件会被禁用
      console.log("点击了");
    },
    clickDiv() {
      console.log("点击了div");
    },
    clickP() {
      console.log("点击了p");
    },
  },
};
</script>


使用事件修饰符 .self

只有点击"div的内容"才会触发,也就是只有点击了div本身自己才能触发事件,不受到冒泡影响.哪怕p没有使用.stop也不会通过p触发div

<template>
  <h3>事件修饰符</h3>
  <a @click.prevent="eventStyle" href="www.baidu.com">跳转</a>

  <div @click.self="clickDiv">
    div的内容
    <p @click="clickP">点我先触发p还是div呢?</p>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    eventStyle(e) {
      //   e.preventDefault(); //禁用控件本身默认的事件,比如说我们a标签的跳转到百度事件会被禁用
      console.log("点击了");
    },
    clickDiv() {
      console.log("点击了div");
    },
    clickP() {
      console.log("点击了p");
    },
  },
};
</script>


## 总结 大家喜欢的话,给个

标签:10,VUE,禁用,修饰符,点击,事件,跳转,div
From: https://blog.csdn.net/u011027547/article/details/136688049

相关文章

  • 个人所得税专项附加扣除子女/父母比例超出100%,而实际家人提交的个税申报并未包含冲突
    问题1:我老婆一开始填报了两个孩子的个人所得税专项附加扣除,写的比例是100%,在提交汇算时,她又去掉了,并且补了税。然后我再去填我的,然后就发现总是提示超过100%,如果提交就不会包含冲突项。问题1解决:1.没有办法,在咨询中提交了问题,他们回复说两个子女的专项附加扣除依然存在,让自己......
  • (谷歌浏览器)如何在vscode中搭建vue.js devtools的环境
    搭建过程中明明所有操作步骤都做了,却还是出现下面这种情况: 以下是正确的搭建操作步骤:根据一下图片在vscode中创建文件夹;将以下代码写入; <scripttype="text/javascript"src="../js/vue.js"></script>接下来就是我们需要点击https://vuejs.zcopy.site/,进入到网站后,......
  • vue axios sessionID 每次请求都不同的解决方式
    前端:        后端:注意:配置 allowedOrigins时,如果写的是http://localhost/,而请求的源地址是127.0.0.1。虽然它们通常指向同一台本地计算机,但在CORS规则中被视为不同的源。需更新更新allowedOrigins列表,将现有条目http://localhost:5174替换为http://127.......
  • CWK100程序设计语言
    程序设计语言与范式1.评估封面单位代码和名称::程序设计语言和Paradigms评估设置人:博士评估ID:1CWK100评估权重:100%评估标题:自我建议任务的多范例解决方案类型:个人(100%)上交截止日期:星期一8日2024年4月19日-晚上9点移交形式和机制:提交是在线的,通过Moodle。您必须提交一个包含每个文件......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • ctfshow web入门 php特性 web89--web107
    web89看到有intval函数这里建议先观看一篇博客好绕过https://blog.csdn.net/wangyuxiang946/article/details/131156104?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171220387216800197044297%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%......
  • Java | Leetcode Java题解之第10题正则表达式匹配
    题目:题解:classSolution{publicbooleanisMatch(Strings,Stringp){intm=s.length();intn=p.length();boolean[][]f=newboolean[m+1][n+1];f[0][0]=true;for(inti=0;i<=m;++i){......
  • Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染
    响应式数据什么是响应式数据? 当数据发生改变时,DOM树的内容,会和数据同步更新。 vue3不是自动响应式数据,需要经过函数处理得到响应式数据对象。ref和reactive这两个函数都会返回响应式数据对象,但也有不同。refref通常用于将一个基本类型转为响应式数据对象。基本类型包括:数......
  • 洛谷p1002题解
    [NOIP2002普及组]过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BB......
  • Vue基础知识:声明式导航---导航链接router-link,router-link是什么,怎么用?router-link-ac
    router-link是什么?vue-router提供的一个全局组件,router-link(用于取代a标签)router-link怎么用?router-link的好处?1.能够跳转,能高亮(自带激活时的类名)1.能跳转,配置to属性指定路径(必须)。本质还是a标签,to不需要多加#既然已经有了a标签,为什么还有加一个router-link标签呢?......