Vue事件修饰符

1· .stop 阻止冒泡

    <!-- 使用 .stop 阻止冒泡 -->
    <!-- 点击按钮 先触发btn的click事件 然后向上冒泡, 触发div的click事件  加上.stop阻止冒泡 只触发btn的 -->
    <div class="inner" @click="divHander"> 
        <input type="button" value="戳我" @click.stop="btnHander"/>
    </div>

2· .prevent 阻止默认行为

<!-- 使用 .prevent 阻止默认行为 -->
    <a href="https://www.baidu.com/" @click.prevent="linkClick">有问题,就去百度咯</a>

3· .capture 实现捕获触发事件机制

<!-- 使用 .capture 实现捕获触发事件机制 -->
    <!-- 点击按钮 先触发div的click事件 然后向下触发btn的事件 -->
    <div class="inner" @click.capture="divHander"> 
        <input type="button" value="戳我" @click="btnHander"/>
    </div>

4· .self 实现只有点击当前元素时候 , 才会触发事件处理函数

<!-- 使用 .self 实现只有点击当前元素时候 , 才会触发事件处理函数 -->
    <!-- 点各自触发各自的事件,不通过冒泡或捕获的方式触发别的元素的事件 -->
    <div class="inner" @click.self="divHander"> 
        <input type="button" value="戳我" @click="btnHander"/>
    </div>

5· .once 只触发一次事件处理函数

<!-- 使用 .once 只触发一次事件处理函数 -->
    <a href="https://www.baidu.com/" @click.prevent.once="linkClick">有问题,就去百度咯</a>
.stop 和 .self 的区别: .self只会阻止自己身上冒泡行为的触发,并不会真正阻止冒泡的行为(会一直向上冒泡)
完整代码如下:
<div id="app">
        <!-- 使用 .stop 阻止冒泡 -->
        <!-- 点击按钮 先触发btn的click事件 然后向上冒泡, 触发div的click事件  加上.stop阻止冒泡 只触发btn的 -->
        <div class="inner" @click="divHander"> 
            <input type="button" value="戳我" @click.stop="btnHander"/>
        </div>
        
        <!-- 使用 .prevent 阻止默认行为 -->
        <a href="https://www.baidu.com/" @click.prevent="linkClick">有问题,就去百度咯</a>
        
        <!-- 使用 .capture 实现捕获触发事件机制 -->
        <!-- 点击按钮 先触发div的click事件 然后向下触发btn的事件 -->
        <div class="inner" @click.capture="divHander"> 
            <input type="button" value="戳我" @click="btnHander"/>
        </div>
        
        <!-- 使用 .self 实现只有点击当前元素时候 , 才会触发事件处理函数 -->
        <!-- 点各自触发各自的事件,不通过冒泡或捕获的方式触发别的元素的事件 -->
        <div class="inner" @click.self="divHander"> 
            <input type="button" value="戳我" @click="btnHander"/>
        </div>
        
        <!-- 使用 .once 只触发一次事件处理函数 -->
        <a href="https://www.baidu.com/" @click.prevent.once="linkClick">有问题,就去百度咯</a>
    </div>
    <script type="text/javascript"> 
        var vm= new Vue({
            el:'#app',
            data:{},
            methods:{
                divHander() {
                    console.log('触发了 div 的点击事件')
                },
                btnHander() {
                    console.log('触发了 Btn 的点击事件')
                },
                linkClick() {
                    console.log('触发了 a链接 的点击事件')
                }
            }
        })
    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容