在JS(JavaScript)中,常见的点击事件(click)修饰符

269 阅读3分钟

  大家好~ 我是前端uio,本文主要介绍在JS(JavaScript)中,常见的点击事件(click)修饰符。 有什么疑问都欢迎私聊或者在评论区留言。如果需要开发web网页或者微信小程序都可以找我私聊,我会尽可能回答我了解的内容。


一、基本介绍

1.概念

        在 JavaScriptClick 事件是一种常见的用户交互事件,表示用户在网页上点击某个元素的动作。当用户使用鼠标或在屏幕上点击某个元素时,Click 事件就会被触发。

2.使用场景

Click 事件广泛应用于各种网页交互设计中,例如:

  • 按钮点击:用户点击按钮以执行特定的操作,如提交表单、打开新页面等。
  • 链接点击:用户点击链接跳转到另一个页面或执行某些脚本。
  • 图像点击:用户点击图片可能会放大查看、切换图片或触发其他动作。

 3.特殊情况

i)事件冒泡:Click事件通常会触发事件冒泡机制,即事件会从触发点向上传播到父元素,直到文档根节点。

ii)事件委托:在父元素上设置 Click 事件监听器,根据事件对象的 target 属性来判断是哪个子元素被点击,从而实现对子元素的事件进行统一处理

二、常见的修饰符 

1.stop

        作用阻止事件冒泡。当用户点击一个元素时,这个修饰符会阻止事件继续传播到父元素。

<div @click.stop="handleClick">点击我,不会影响父元素</div>

2.prevent

作用阻止默认行为。例如,对于 <a> 标签,默认行为是导航到指定的URL,使用.prevent修饰符可以阻止这种行为。

例如,在设计手机验证码表单时,若没有设置该修饰符,点击发送验证码时,会触发表单的提交。

<form @submit.prevent="onSubmit">
  <input type="text" id="name" v-model="user.username"/>
  <button type="submit">保存</button>
</form>

3.self

作用:当事件目标本身与父级元素都绑定相同的事件时,只需要处理目标元素的情况。

<div @click.self="handleClick">点击我,不会影响子元素</div>

4.once

作用:只会触发一次。无论点击多少次,事件处理器都只会执行一次

<button @click.once="handleClick">点击我,只触发一次</button>

5.passive

作用:指示事件处理程序不会调用 preventDefault() 。这个修饰符一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能。

<div @touchstart.passive="handleTouchStart">触摸开始</div>

6.capture

作用:添加事件侦听器时使用事件捕获模式,与事件冒泡的方向相反,事件捕获由外到内

7.exact

作用:仅当事件目标是精确匹配的元素时才会触发事件处理器。

<div @click.exact="handleExactClick">点击我,只有当点击的是我自己</div>

8.ctrl

作用:只有当 Ctrl 键被按下时,事件才会被触发。

<div @click.ctrl="handleCtrlClick">按住Ctrl键点击我</div>

9.alt

作用:只有当 Alt 键被按下时,事件才会被触发。

<div @click.alt="handleAltClick">按住Alt键点击我</div>

 10.shift

作用:只有当 Shift 键被按下时,事件才会被触发。

<div @click.shift="handleShiftClick">按住Shift键点击我</div>

11.meta

作用:只有当 Meta 键被按下时,事件才会被触发。

<div @click.meta="handleMetaClick">按住Meta键点击我</div>

 三、总结与思考

1.修饰符可以单独使用,也可以组合使用,例如 @c lick.stop.prevent 会同时阻止事件冒泡和默认行为。

2.使用修饰符时,需要注意调用顺序,@click.prevent.stop 会阻止事件冒泡和事件的默认行为;@c lick.stop.prevent 先阻止默认行为再阻止冒泡事件。