zoukankan      html  css  js  c++  java
  • vue中事件冒泡规则和事件捕获规则

    <div id="app">
            <div @click="handleClickOne">
                <p @click="handleClickTwo">测试</p>
            </div>
        </div>
        <script src="./js/vue.js"></script>
        <script>
    
            var vm = new Vue({
                el: '#app',
                data: {
                   text:'hello'
                },
                methods: {
                    handleClickOne() {
                        alert('父元素')
                    },
                    handleClickTwo() {
                        alert('子元素')
                    }
                }
            })
        </script>

    1.事件冒泡, 是从里到外的,  可以看到,  先 子元素  后 父元素

     

    2.事件捕获   是从 外 到内的,  先 父元素   后 子元素   @click.capture

    <div id="app">
            <div @click.capture="handleClickOne">
                <p @click.capture="handleClickTwo">测试</p>
            </div>
        </div>

     

       注释: 课外拓展

    3.  @click.self="handleClick"

     点击 父元素内容才触发点击事件,   点 子元素 无效,  有时候 需要这样的功能   

    
    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>阻止冒泡点击事件的弊端</title>
    </head>
    <body>
        <div id="app">
            <div @click.self="handleClick">
                我是父元素内容
                <p>我是子元素,点我没用, 加了self</p>
            </div>
        </div>
        <script src="./js/vue.js"></script>
        <script>
    
            var vm = new Vue({
                el: '#app',
                data: {
                   text:'hello'
                },
                methods: {
                    handleClick() {
                        alert('点击了')
                    }
                }
            })
        </script>
    </body>
    </html>
    <div id="app">
            <div @click="handleClickOne">
                <p @click="handleClickTwo">测试</p>
            </div>
        </div>
        <script src="./js/vue.js"></script>
        <script>

            var vm = new Vue({
                el: '#app',
                data: {
                   text:'hello'
                },
                methods: {
                    handleClickOne() {
                        alert('父元素')
                    },
                    handleClickTwo() {
                        alert('子元素')
                    }
                }
            })
        </script>
  • 相关阅读:
    SpringMVC,3种不同的URL路由配置方法(这根本不是一个小问题)
    PHP在Windows下安装配置第一步
    跟我一起学extjs5(18--模块的新增、改动、删除操作)
    html image -- data:image/png;base64
    oc66--代理模式应用2
    oc65--协议应用1,接口.做数据类型限定
    oc64--协议2@protocol
    oc63--协议@protocol1
    oc62--block1
    oc61--block
  • 原文地址:https://www.cnblogs.com/520BigBear/p/13793045.html
Copyright © 2011-2022 走看看