1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vue 事件修饰符 stop capture once self prevent passive

vue 事件修饰符 stop capture once self prevent passive

时间:2018-07-15 15:52:34

相关推荐

vue 事件修饰符 stop capture once self prevent passive

stop阻止点击事件继续传播 阻止冒泡

capture添加事件监听器时使用事件捕获模式 自己子元素 会触发添加了capture 修饰符的父元素的 事件 再处理子元素的事件逻辑

once 事件只触发一次

self 只有是自身元素时才会触发事件处理 如果其子元素间接触发则不会触发

prevent 阻止默认行为 如a标签点击会跳转 添加prevent修饰符则不会进行跳转

passive 不阻止默认行为 按照通俗的理解:提前告诉浏览器 这个事件有默认行为的话我不会阻 止的,浏览器你就不要花费去想了 直接触发吧(代码就不写了)

写代码看下具体结果

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><style>.box-outer {width: 200px;height: 200px;border: 1px solid #000fff;}.box-inner {margin: 50px auto;width: 100px;height: 100px;background-color: #c9c0c9;}</style><body><div id="app"><!-- 外层盒子 --><div class="box-outer" @click="clickOuter"><!-- 内层盒子 --><div class="box-inner" @click="clickInner"><!-- a标签 --><a @click="clickA" href="/npm/vue@2.7.14/dist/vue.esm.browser.js">跳转</a></div> </div></div><script type="module">import Vue from "/npm/vue@2.7.14/dist/vue.esm.browser.js";const vm = new Vue({name: "HelloWorld",el: "#app", methods: {clickOuter() {console.log('outer');},clickInner() {console.log('inner');},clickA() {console.log('a标签');},},});</script></body></html>

1.如果不加任何修饰符的话 点击a标签会跳转,点击内部盒子会先触发clickInner,

再触发clickOuter

2.a标签加上prevent修饰符时,点击不会跳转 不做演示

3.添加once 修饰符后,则事件只触发一次

4.外层盒子加.self,点击内部盒子只触发了内部盒子回调 外部盒子没触发回调

<div class="box-outer" @click.self="clickOuter">

5.内部盒子加.stop,阻止事件冒泡,点击内部盒子时只会触发内部盒子事件回调,不会触发外部盒子的事件回调(去掉了外部盒子上的self 之后也不会触发)

<!-- 外层盒子 --><div class="box-outer" @click="clickOuter"><!-- 内层盒子 --><div class="box-inner" @click.stop="clickInner"><!-- a标签 --><a@click="clickA"href="/npm/vue@2.7.14/dist/vue.esm.browser.js">跳转</a></div></div>

6.外层盒子添加capture修饰符,改造代码增加一个最内层盒子增加点击事件 点击时打印信息

点击最内层的盒子时发现会先触发 外层有capture修饰符的盒子的事件回调,其次是自身的 最后是没有加capture修饰符的外层盒子依次向外冒泡

<div class="box-outer" @click.capture="clickOuter"><!-- 内层盒子 --><div class="box-inner" @click="clickInner"><!-- a标签 --><!-- <a@click="clickA"href="/npm/vue@2.7.14/dist/vue.esm.browser.js">跳转</a> --><div class="box-iin" @click="clickIin">最内层盒子</div></div></div>

修饰符可以连续添加 如click.prevent.self 顺序很重要,使用需注意

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。