04.事件修饰符.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <style>
        .inner{
        height: 150px;
        background-color : darkcyan;
    }

    .outer{
        padding: 40px;
        background-color : green;
    }
</style>

    <script src="./lib/vue.min.js"></script>

</head>

<body>

    <div id="app" class="inner" @click="divHandler">
        <!--
              点击按钮的时候 先触发弹框btn 再触发弹div 因为按钮是在div里面的 
              这种就叫做冒泡事件,如果加上.stop 就是禁止冒泡事件的发生 执行效果是:
              点击按钮后 弹出btn div不弹出了
        -->
        <input type="button" value="戳它" @click.stop="bthHandler">
        <br>
        <!-- 禁止事件的默认行为 此处就是禁止了超链接跳转标签的作用 -->
        <a href="http://www.baidu.com" @click.prevent="aHandler">百度</a>
    </div>

    <br>

    <!--
        点击按钮的时候 先触发弹框btn 再触发弹div 因为按钮是在div里面的 
        这种就叫做冒泡事件,如果加上.capture  执行效果是:
        点击按钮后 先弹出div 后弹出btn 与冒泡事件相反
    -->
    <div id="app2" class="inner" @click.capture="divHandler">
        <input type="button" value="戳它" @click="bthHandler">
        <br>
    </div>

    <br>

    <!--
        实现 点按钮只触发自己的事件 不触发弹弹div 只有点击div才触发自己的弹出div的事件
        .self属性就是只触发自己的事件
        注意这里 .self如果设置在btn上 还会触发弹div 因为btn本身就触发了自己弹出btn
        而弹出div 是属于冒泡被动触发的 所以不要歧义理解
    -->
    <div id="app3" class="inner" @click.self="divHandler">
        <input type="button" value="戳它" @click="bthHandler">
        <br>
    </div>

    <br>

    <!-- 事件可以连着写的.prevent.once 事件只触发一次 禁止点击的第一次 但第二次以后还是可以触发 -->
    <div id="app4" class="inner" @click.self="divHandler">
        <a href="http://www.baidu.com" @click.prevent.once="aHandler">百度</a>
        <br>
    </div>

    <br>

    <!-- .self和.stop的区别 
        1:这样写 点击按钮 弹btn 触发inner弹 div 还会触发outer 弹出div
    -->
    <div id="app5" class="outer" @click="divHandler">
        <div class="inner" @click.self="divHandler">
            <input type="button" value="戳它" @click="bthHandler">
        </div>
    </div>
    <br>
    <!--2:这样写 点击按钮 弹btn  -->
    <div id="app6" class="outer" @click="divHandler">
        <div class="inner" @click="divHandler">
            <input type="button" value="戳它" @click.stop="bthHandler">
        </div>
    </div>



    <script>

        var vm = new Vue({
            el: '#app',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                divHandler() {
                    alert('div');
                },
                bthHandler() {
                    alert('btn');
                },
                aHandler() {
                    alert('href')
                }
            }
        });

        var vm2 = new Vue({
            el: '#app2',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                divHandler() {
                    alert('div');
                },
                bthHandler() {
                    alert('btn');
                }
            }
        });

        var vm3 = new Vue({
            el: '#app3',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                divHandler() {
                    alert('div');
                },
                bthHandler() {
                    alert('btn');
                }
            }
        });

        var vm4 = new Vue({
            el: '#app4',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                aHandler() {
                    alert('href')
                }
            }
        });

        var vm5 = new Vue({
            el: '#app5',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                divHandler() {
                    alert('div');
                },
                bthHandler() {
                    alert('btn');
                }
            }
        });

        var vm6 = new Vue({
            el: '#app6',
            data: {
                msg: '欢迎学习vue'
            },
            methods: {
                divHandler() {
                    alert('div');
                },
                bthHandler() {
                    alert('btn');
                }
            }
        });



    </script>

</body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值