为什么vue中的事件绑定不遵循DOM标准的事件模型

clipboard.png
<!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>

</head>

<body>

<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
    <div @click="div">
        <span @click="span">1231</span>

    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {

        },
        methods: {
            span() {
                console.log('span');
            },
            div() {
                console.log('div');

            },
        }
    })
</script>

</body>

</html>
先触发了span, 再触发div

阅读 2.4k
3 个回答

没错呀,如果需要监听捕获,使用@click.capture

js处理事件默认都是在冒泡阶段(vue也是),所以会先触发span再触发div,vue中可以通过事件修饰符让事件在捕获阶段触发

<div :click.capture="handleClick">...</div>

事件是冒泡机制,点击外层,内部先触发,冒泡给父级。 dom也是这样的啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题