前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >8. Vue v-on的事件修饰符

8. Vue v-on的事件修饰符

作者头像
Devops海洋的渔夫
发布2020-03-19 17:19:21
9760
发布2020-03-19 17:19:21
举报
文章被收录于专栏:Devops专栏Devops专栏

事件修饰符:

  • .stop 阻止冒泡
  • .prevent 阻止默认事件
  • .capture 添加事件侦听器时使用事件捕获模式
  • .self 只当事件在该元素本身(比如不是子元素)触发时触发回调
  • .once 事件只触发一次
  • 事件修饰符的串联使用,例如:@click.prevent.once,只会执行一次阻止默认行为,第二次则不会阻止。另外,两个事件修饰符的先后效果一致。

下面对于每个修饰符编写逐个示例。

示例:.stop 阻止冒泡事件

编写一个按钮以及div,当按钮在div内,如果监听click事件,默认点击按钮的时候也会出发div的click事件,这种情况就是事件冒泡

示例代码如下:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .inner{
            width: 100%;
            height: 100px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>

    <div id="app">

        <div class="inner" @click="divHandler">
            <input type="button" value="按钮" @click="btnHandler">
        </div>

    </div>

    <!--  1.导入vue.js库  -->
    <script src="lib/vue.js"></script>

    <script>
        // 2. 创建一个Vue的实例
        var vm = new Vue({
            el: '#app',
            data: {},
            methods:{
                divHandler(){
                    console.log("触发div的click事件");
                },
                btnHandler(){
                    console.log("触发btn的click事件");
                }
            }

        })
    </script>

</body>
</html>

在浏览器执行如下:

那么为了阻止冒泡事件,可以使用.stop事件修饰符,如下:

再次在浏览器点击按钮,查看触发事件如下:

可以看到div的click事件没有被触发,已经阻止事件冒泡了。

示例:.prevent 阻止默认事件

编写一个a标签,绑定一个click事件,阻止a标签默认的href跳转页面的行为。

示例如下:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .inner{
            width: 100%;
            height: 100px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>

    <div id="app">

        <a href="https://www.baidu.com" @click="clickHandler">访问百度</a>

    </div>

    <!--  1.导入vue.js库  -->
    <script src="lib/vue.js"></script>

    <script>
        // 2. 创建一个Vue的实例
        var vm = new Vue({
            el: '#app',
            data: {},
            methods:{
                clickHandler(){
                    console.log("触发click事件");
                },
            }

        })
    </script>

</body>
</html>

在浏览器点击a标签,则自动跳至百度页面,如下:

但是很多时候,其实是不需要a标签的默认行为的,这时候就需要阻止默认行为了,如下:

此时点击a标签则阻止了默认行为,只执行监听事件。

示例: .capture 添加事件侦听器时使用事件捕获模式

事件捕获模式其实是冒泡事件的相反事件传递模式,也就是由外而内的事件触发模式。

还是用刚才的按钮和div的冒泡示例,来看看:

在浏览器中,点击按钮,查看触发事件的顺序,如下:

示例:.self 只当事件在该元素本身(比如不是子元素)触发时触发回调

点击btn按钮,查看触发事件,如下:

点击div,查看触发事件,如下:

示例:.once 事件只触发一次

多次点击btn按钮,查看触发事件,如下:

示例:事件修饰符的串联使用,例如:@click.prevent.once,只会执行一次阻止默认行为,第二次则不会阻止。另外,两个事件修饰符的先后效果一致。

在浏览器点击a标签,查看触发事件,如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事件修饰符:
    • 示例:.stop 阻止冒泡事件
      • 示例:.prevent 阻止默认事件
        • 示例: .capture 添加事件侦听器时使用事件捕获模式
          • 示例:.self 只当事件在该元素本身(比如不是子元素)触发时触发回调
            • 示例:.once 事件只触发一次
              • 示例:事件修饰符的串联使用,例如:@click.prevent.once,只会执行一次阻止默认行为,第二次则不会阻止。另外,两个事件修饰符的先后效果一致。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档