23-Vue之事件修饰符

简介: 23-Vue之事件修饰符

前言

  • 本篇来学习两个常用的事件修饰符

阻止默认行为

  • .prevent : 阻止默认行为
<!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">
    <p>{{message}}</p>
    <a href="https://blog.csdn.net/it_heima" @click="showMes">跳转小白的博客</a>
    <!--    .prevent阻止默认行为-->
    <a href="https://blog.csdn.net/it_heima" @click.prevent="showInfo">跳转小白的博客</a>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    // 创建vue的实例对象
    const app = new Vue({
        // el 属性是固定写法,表示当前vue实例要控制页面上的哪个区域,接收的值是一个选择器
        el: '#app',
        // data对象是要渲染页面上的数据
        data: {
            message: '事件修饰符学习!'
        },
        methods: {
            showMes(e) {
                console.log('被点击了!')
                // 原生 阻止默认行为写法,对应a标签来说就是阻止跳转
                e.preventDefault()
            },
            showInfo() {
                console.log('被点击了!')
            }
        }
    });
</script>
</body>
</html>

阻止冒泡事件

  • .stop :阻止冒泡事件
  • 如下为未阻止冒泡事件示例
<!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">
    <p>{{message}}</p>
    <a href="https://blog.csdn.net/it_heima" @click="showMes">跳转小白的博客</a>
    <!--    .prevent阻止默认行为-->
    <a href="https://blog.csdn.net/it_heima" @click.prevent="showInfo">跳转小白的博客</a>
    <hr>
    <div style="height: 150px;background-color: orange;padding-left: 100px;line-height: 150px" @click="divHandler">
        <button @click="btnHandler">按钮</button>
    </div>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    // 创建vue的实例对象
    const app = new Vue({
        // el 属性是固定写法,表示当前vue实例要控制页面上的哪个区域,接收的值是一个选择器
        el: '#app',
        // data对象是要渲染页面上的数据
        data: {
            message: '事件修饰符学习!'
        },
        methods: {
            showMes(e) {
                console.log('被点击了!')
                // 原生 阻止默认行为写法,对应a标签来说就是阻止跳转
                e.preventDefault()
            },
            showInfo() {
                console.log('被点击了!')
            },
            btnHandler() {
                console.log('btn 点击事件')
            },
            divHandler() {
                console.log('div 点击事件')
            }
        }
    });
</script>
</body>
</html>

  • 阻止冒泡事件
<!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">
    <p>{{message}}</p>
    <a href="https://blog.csdn.net/it_heima" @click="showMes">跳转小白的博客</a>
    <!--    .prevent阻止默认行为-->
    <a href="https://blog.csdn.net/it_heima" @click.prevent="showInfo">跳转小白的博客</a>
    <hr>
    <div style="height: 150px;background-color: orange;padding-left: 100px;line-height: 150px" @click="divHandler">
        <button @click="btnHandler">按钮</button>
        <button @click.stop="btnHandler1">按钮</button>
    </div>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    // 创建vue的实例对象
    const app = new Vue({
        // el 属性是固定写法,表示当前vue实例要控制页面上的哪个区域,接收的值是一个选择器
        el: '#app',
        // data对象是要渲染页面上的数据
        data: {
            message: '事件修饰符学习!'
        },
        methods: {
            showMes(e) {
                console.log('被点击了!')
                // 原生 阻止默认行为写法,对应a标签来说就是阻止跳转
                e.preventDefault()
            },
            showInfo() {
                console.log('被点击了!')
            },
            btnHandler(e) {
                console.log('btn 点击事件')
                // 原生阻止冒泡事件
                e.stopPropagation()
            },
            btnHandler1() {
                console.log('btn 点击事件1')
            },
            divHandler() {
                console.log('div 点击事件')
            }
        }
    });
</script>
</body>
</html>


相关文章
|
2天前
|
JavaScript
|
4天前
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
14 6
|
1天前
|
存储 缓存 JavaScript
vue代码优化方案
【7月更文挑战第13天】 **Vue.js 优化要点:** 分解大组件以提高复用性和加载速度;利用计算属性与侦听器优化数据处理;使用Object.freeze()减少响应式数据;借助Vuex或Composition API管理状态;实现虚拟滚动和无限加载提升长列表性能;路由懒加载减少初始加载时间;用Vue DevTools检测性能瓶颈;定期代码审查与重构;应用缓存策略;遵循最佳实践与团队规范,提升应用整体质量。
10 2
|
4天前
|
JavaScript 前端开发
【vue】 el-table解决分页不能筛选全部数据的问题
【vue】 el-table解决分页不能筛选全部数据的问题
15 4
|
4天前
|
JavaScript
【vue】 vue2 监听滚动条滚动事件
【vue】 vue2 监听滚动条滚动事件
10 1
|
4天前
|
JavaScript 定位技术
【天地图】vue 天地图 T is not defined
【天地图】vue 天地图 T is not defined
14 1
|
4天前
|
JavaScript 前端开发
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
9 0
|
4天前
|
JavaScript 前端开发 数据安全/隐私保护
【vue】自定义指令实现 复制、长按、水印 功能
【vue】自定义指令实现 复制、长按、水印 功能
9 0
|
4天前
|
JavaScript
【vue】图片懒加载 vue-lazyload 使用
【vue】图片懒加载 vue-lazyload 使用
8 0
|
4天前
|
JavaScript
【vue】 vue如何根据不同路由地址更改页面的标题
【vue】 vue如何根据不同路由地址更改页面的标题
5 0