Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

vue阻止事件冒泡和事件捕获

作者:未來的款姐"   发布日期:2026-07-25   浏览:56

<template>
  <div id="app">
    <!-- 阻止事件冒泡 -->
    <div @click="handleOuterClick" class="outer">
      Outer Div
      <div @click.stop="handleInnerClick" class="inner">
        Inner Div
      </div>
    </div>

    <!-- 使用事件捕获 -->
    <div @click.capture="handleCaptureClick" class="capture-outer">
      Capture Outer Div
      <div @click="handleBubbleClick" class="capture-inner">
        Capture Inner Div
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  methods: {
    handleOuterClick() {
      console.log('Outer div clicked');
    },
    handleInnerClick() {
      console.log('Inner div clicked, but event bubbling is stopped');
    },
    handleCaptureClick() {
      console.log('Capture phase: Outer div clicked');
    },
    handleBubbleClick() {
      console.log('Bubbling phase: Inner div clicked');
    }
  }
};
</script>

<style scoped>
.outer, .capture-outer {
  padding: 20px;
  border: 1px solid black;
  margin: 10px;
}
.inner, .capture-inner {
  padding: 20px;
  border: 1px solid red;
}
</style>

解释说明

  1. 阻止事件冒泡

    • Inner Div 的点击事件中使用了 .stop 修饰符 (@click.stop),这会阻止事件冒泡到父级元素。因此,当点击 Inner Div 时,只会触发 handleInnerClick 方法,而不会触发 handleOuterClick 方法。
  2. 事件捕获

    • Capture Outer Div 上使用了 .capture 修饰符 (@click.capture),这使得点击事件在捕获阶段就会被处理。因此,当点击 Capture Inner Div 时,首先会触发 handleCaptureClick 方法,然后才会触发 handleBubbleClick 方法。

通过这两种方式,你可以灵活地控制事件的传播行为。

上一篇:vue使用

下一篇:vue string转int

大家都在看

vue.js devtools用法

three.js vue

vue js for循环

vue.min.js 本地引入

vue.js 3

highlight.js vue

vue.config.js 配置

vue.config.js 配置代理

vue.config.js devserv

vue.config.js transpi

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站