v-on: 事件处理简写@,及修饰符

v-on 是 Vue中用于绑定事件的指令。它可以绑定许多不同的事件,如:

  • click:鼠标点击事件
  • input:输入框内容变化事件
  • keydown:按键按下事件
  • keyup:按键松开事件
  • submit:表单提交事件
  • mouseover:鼠标悬浮事件
  • mouseout:鼠标移出事件
  • change:输入框内容改变事件
  • focus:获得焦点事件
  • blur:失去焦点事件
  • scroll:滚动事件

等,v-on:可以简写为@

1. 绑定监听的方式:

v-on:xxx="fun"

@xx事件名="fun"

@x事件名="fun(参数)"

默认事件形参: event

隐含属性对象: $event

2. 事件修饰符:

.prevent : 阻止事件的默认行为 event.preventDefault()

.stop : 停止事件冒泡 event.stopPropagation()

.once: 事件响应一次

3. 按键修饰符

.keycode : 操作的是某个keycode值的健

.enter : 操作的是enter键

<template>
  <div style="font-size: 14px">
    <h2>1. 绑定监听</h2>
    <button @click="handleClick1">测试点击自带的event</button>
    <button @click="handleClick2('click事件1')">测试点击传入的参数</button>
    <button @click="handleClick3('click事件+$event', $event)">测试点击传入的$event参数</button>   
    <span>测试多个事件</span>
    <input type="text" v-model="msg"
    @mouseover="handleMouseover"
    @mouseout="handleMouseout"
    @change="handleChange"
    @keyup="handleClickKeyup"
    @focus="handleFocus"
    @blur="handleBlur"
    >
    <br>

    <h2>2. 事件修饰符</h2>
    <!-- 
      停止事件冒泡
      阻止事件的默认行为
      事件监听只响应一次
    -->
    <div style="width: 200px; height: 200px; background: red;" @click="handleClick4">
      <div style="width: 100px; height: 100px; background: green;" @click.stop="handleClickStop"></div>
    </div>

    <a href="http://www.baidu.com" @click.prevent="handleClickPrevent">百度一下</a>
    <button @click.once="handleClickOnce">只响应一次点击</button>

    <h2>3. 按键修饰符</h2>
    <!-- vue2.0版本语法 可以使用 @keyup.13 代替@keyup.enter -->
    <span>按下回车触发</span>
    <input type="text" v-model="msg2" @keyup.enter="handleClickKeyupEnter">
  </div>
</template>

<script lang="ts">
// vue3.0版本语法
import { defineComponent , ref} from "vue";
export default defineComponent({
  name: "组件名",
  setup() {
    const msg = ref('');
    const msg2 = ref('');
    // click事件
    const handleClick1 = (event) => {
      console.log(event.target.innerHTML)
    }
    const handleClick2 = (text) => {
      console.log('测试点击传入的参数',text);
    };
    const handleClick3 = (text, event) => {
      console.log('测试点击传入的参数$event',text, event);
    };
    // -   `mouseover`:鼠标移入事件
    // -   `mouseout`:鼠标移出事件
    const handleMouseover = () => {
      console.log('鼠标移入');
    };
    const handleMouseout = () => {
      console.log('鼠标移出');
    };
    // -   `change`:输入框内容改变事件
    const handleChange = () => {
      console.log('输入框内容改变');
    };
    // -   `focus`:获得焦点事件
    const handleFocus = () => {
      console.log('获得焦点');
    };
    // -   `blur`:失去焦点事件
    const handleBlur = () => {
      console.log('失去焦点');
    };

    // 事件修饰符
    const handleClick4 = () => {
      console.log('测试点击触发了 外层');
    };
    const handleClickStop = () => {
      console.log('测试点击触发了stop修饰符');
    };
    const handleClickPrevent = () => {
      console.log('测试点击触发了prevent修饰符');
    };
    const handleClickOnce = () => {
      console.log('测试点击触发了once修饰符');
    };

    // 按键修饰符
    const handleClickKeyup = (key) => {
      console.log('按键触发了Keyup',key);
    };
    const handleClickKeyupEnter = () => {
      console.log('按键触发了Enter');
    };

    return {
      msg,msg2,
      handleClick1,handleClick2,handleClick3,
      handleClick4,handleClickStop,handleClickPrevent,
      handleClickOnce,handleClickKeyup,handleClickKeyupEnter,
      handleMouseover,handleMouseout,handleChange,handleFocus,handleBlur
    };
  },
});
</script>
事件触发后的页面效果:

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值