小程序中事件对象的属性与方法

【愚公系列】《微信小程序开发解析》005-事件 在微信小程序中,事件是用户和程序之间交互的核心概念。通过事件,用户可以与小程序进行各种交互操作,例如点击按钮、输入文字、滑动屏幕等。以下是微信小程序中事件的概念和使用方法。事件类型触摸事件:包括触摸开始、触摸移动、触摸结束等,如touchstarttouchmovetouchend等。鼠标事件:主要用于 PC 端小程序,如clickdblclick等。表单事件:与表单控件相关的事件,如submitinputfocusblur等。媒体事件:与音视频控件相关的事件,如playpauseended等。 阅读详情

在小程序中,事件处理函数的参数为事件对象(通常命名为 e),包含了事件相关的详细信息(如事件类型、触发元素、传递的数据等)。事件对象的属性和方法因事件类型(如点击、输入、触摸等)略有差异,但核心属性具有通用性。

一、核心属性

1. type

类型:String

说明:表示事件的类型(如 "tap"、"input"、"longpress" 等)。

示例:

// 点击事件的处理函数
handleTap(e) {
  console.log(e.type); // 输出 "tap"
}

2. target

类型:Object

说明:触发事件的「源头元素」(可能是子组件),包含该元素的标签名、id、class等信息。

属性结构:

id:元素的 id 属性值

dataset:元素通过 data-* 定义的自定义数据(仅当前元素的)

tagName:元素的标签名(如 "view"、"button")

classList:元素的 class 列表

示例:

<view bind:tap="handleTap">
  <button id="btn" data-type="submit">点击</button>
</view>

handleTap(e) {
  console.log(e.target.id); // 输出 "btn"(源头是button)
  console.log(e.target.dataset.type); // 输出 "submit"
}

3. currentTarget

类型:Object

说明:绑定事件的当前元素(与 target 可能不同,若事件冒泡则可能为父元素),属性结构同 target。

示例:

<view id="parent" bind:tap="handleTap" data-parent="true">
  <button id="child">点击</button>
</view>

handleTap(e) {
  console.log(e.currentTarget.id); // 输出 "parent"(事件绑定在view上)
  console.log(e.currentTarget.dataset.parent); // 输出 true
  console.log(e.target.id); // 输出 "child"(触发事件的源头是button)
}

4. detail

类型:Object

说明:事件的详细信息,内容因事件类型而异,是最常用的属性之一。

常见事件的 detail 内容:

tap/longpress(点击/长按):包含触摸点坐标

{ x: 150, y: 300 } // 相对于页面的坐标
    

input(输入框输入):包含输入值

{ value: "用户输入的内容", cursor: 5 } // cursor是光标位置
    

change(表单元素值变化):

复选框(checkbox):{ value: ["选中的值1", "选中的值2"] }

单选框(radio):{ value: "选中的值" }

滑块(slider):{ value: 50 }(当前值)

submit(表单提交):包含表单所有字段的键值对

  • { value: { username: "张三", age: "18" } }
        

示例(input事件):

<input bind:input="handleInput" />

handleInput(e) {
  console.log(e.detail.value); // 实时输出用户输入的内容
}

5. dataset

类型:Object

说明:绑定事件的元素(currentTarget)通过 data-* 定义的自定义数据集合(简化获取方式,等价于 e.currentTarget.dataset)。

示例:

<button bind:tap="handleClick" data-id="100" data-user-name="张三">点击</button>

handleClick(e) {
  console.log(e.dataset.id); // 输出 100(注意:data-id 对应 dataset.id)
  console.log(e.dataset.userName); // 输出 "张三"(注意:data-user-name 会转为驼峰式 userName)
}

6. mark

类型:Object

说明:通过 mark: 前缀定义的自定义数据(与 dataset 类似,但支持事件冒泡传递,即父元素可获取子元素的 mark 数据)。

示例:

<view bind:tap="handleTap" mark:parent="view">
  <button mark:child="btn">点击</button>
</view>

handleTap(e) {
  console.log(e.mark.parent); // 输出 "view"(当前元素的mark)
  console.log(e.mark.child); // 输出 "btn"(子元素的mark,因冒泡被传递)
}

7. timestamp

类型:Number

说明:事件触发的时间戳(毫秒级,从1970年开始计算)。

示例:

handleTap(e) {
  console.log(e.timestamp); // 输出 1620000000000(事件触发的时间)
}

8. touches 与 changedTouches

类型:Array<Object>

说明:仅在触摸事件(如 touchstart、touchmove、touchend)中存在,包含触摸点的坐标信息。

touches:当前屏幕上所有触摸点的列表

changedTouches:当前事件中状态发生变化的触摸点列表(如触摸开始、移动、结束)

触摸点对象的属性:

clientX/clientY:相对于页面可视区域的坐标(不含导航栏、状态栏)

pageX/pageY:相对于页面的坐标(含滚动距离)

screenX/screenY:相对于屏幕的坐标

示例:

<view bind:touchmove="handleTouchMove">滑动</view>

handleTouchMove(e) {
  console.log(e.changedTouches[0].clientX); // 输出当前触摸点的X坐标
}

二、常用方法

小程序事件对象的方法较少,主要用于事件控制,常见的有:

1. stopPropagation()

说明:阻止事件冒泡(等价于使用 catch:事件类型 绑定事件)。

示例:

<view bind:tap="parentTap">
  <button bind:tap="childTap">点击</button>
</view>

childTap(e) {
  e.stopPropagation(); // 阻止事件冒泡到父元素
  console.log("子元素事件");
}

parentTap() {
  console.log("父元素事件"); // 不会执行,因事件被阻止冒泡
}

2. preventDefault()

说明:阻止事件的默认行为(部分事件有默认行为,如表单提交的跳转)。

示例:

<form bind:submit="handleSubmit">
  <button form-type="submit">提交</button>
</form>

handleSubmit(e) {
  e.preventDefault(); // 阻止表单默认提交行为(如页面刷新)
  console.log("自定义提交逻辑");
}

三、总结

事件对象的核心属性中,detail(获取事件详情)、dataset(获取自定义数据)、target/currentTarget(获取元素信息)是开发中最常用的。不同事件类型的 detail 内容差异较大,需根据具体场景查阅对应事件的文档。

国标GB28181视频平台EasyGBS国标平台设备播放断流现象的问题解决方案 于是排查代码发现,当设备网络较差时,设备会断流,超过指定的时间30s(EasyGBS平台默认值),就会主动清除流媒体服务,但是redis中的流数据还在,而当设备在录像时,自动保活会从redis中取保活流数据,所以就会出现设备状态显示正在播放,但是流已经消失的情况。有用户反馈,在安防视频监控EasyGBS运行时,接入的设备刚开始可以正常播放,开启云端录像后,也没有停止和重播的操作,但是出现了视频流断流的现象。在设备进行播放保活时,对流信息进行判断,添加一个最后的处理流时间,如果超过指定时间就自动重新拉流。 阅读详情

相关推荐

基于Apache SeaTunnel构建CDC数据同步管道

Apache SeaTunnel是一个数据集成开发平台,其发展经历了几个重要阶段:ETL时代(90年代):面向结构化数据库的数据同步,用于构建数据仓库。MPP和分布式技术流行:使用技术如Hive进行数据仓库的构建。此阶段主要使用mapreduce程序进行数据搬运和转换。数据湖技术流行:重视数据集成,强调先同步数据至数据湖仓储,再进行业务面向的转换和设计。CDC,即变更数据捕获,是一种捕获数据库变更事件(如插入、更新、删除)的技术。

weixin_54625990的博客 2172

vue,小程序 阻止事件穿透的方法

默认情况下,事件在h5页面会穿透传递,比如一div里面套一个div,点击上层div,下层div也会响应 要阻止事件穿透,使用event.stopPropagation(); 代码示例: <div @click="testout($event)> <div @click="testin($event)"></div> </div> ....... ...

于利文的博客 2178

【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1107

微信小程序滑动穿透问题,使用catchtouchmove警告 handle event “touchmove“

微信小程序滑动穿透问题,使用catchtouchmove警告 handle event "touchmove"

九亿宅男的梦的博客 1459

Win10下ISE14.7安装避坑全记录:从License加载失败到ChipScope连不上,我踩过的雷都在这了

本文详细记录了在Win10系统下安装ISE14.7时遇到的常见问题及解决方案,包括License加载失败、IMPACT闪退、ChipScope连接故障等。通过实际案例和步骤解析,帮助用户避开安装陷阱,确保FPGA开发工具顺利运行。特别针对license问题提供了兼容性设置和文件修改的实用技巧。

weixin_42683394的博客 225

高速电路设计必看:同步开关噪声问题解析

数字电路中的同步开关噪声(SSN)问题日益突出,尤其是随着高速器件应用增多。本文分析了地弹和电压弹的产生机理,指出其与电源网络电感、输出驱动电流变化率密切相关。文章详细阐述了地弹参数特征,包括峰值电压、脉冲宽度等关键指标,并探讨了负载电容、信号压摆率等因素对地弹的影响。最后提出系统化的解决方案,涵盖芯片选型、电路设计、PCB布局和后期调试等多个环节,强调通过降低回路电感和控制电流变化率来有效抑制SSN。这些措施需要在性能、成本和复杂度之间取得平衡,为高速数字电路设计提供了重要参考。

一只豌豆象的博客 298

JS 之 事件Event对象详解(属性、方法、自定义事件)

​ 事件event对象是指在浏览器中触发事件时,浏览器会自动创建一个event对象,其中存储了本次事件相关的信息,包括事件类型、事件目标、触发元素等等。浏览器创建完event对象之后,会自动将该对象作为参数传递给绑定的事件处理函数,我们可以在事件处理函数中通过访问event对象的属性和方法,来获取事件的相关信息,并做出后续的逻辑处理。

weixin_45092437的博客 1万+

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 157

event是什么?事件对象

一、什么是event 1.event是事件函数对象,内置对象的一种 事件对象包含的几个操作原语:(这里只当了解) CreateEvent() 创建一个事件对象 OpenEvent() 打开一个事件对象 SetEvent() 设置指定的事件对象为有信号状态 WaitForSingleObject() 等待一个事件 WaitForMultipleObjects() 等待多个事件 WaitFo...

樊小勇的博客 9205

大数据在电力行业的应用案例解析-【电力技术】(九)大数据在电力储能运维中的深度应用(含故障预测代码)

大数据技术为电力储能运维提供了“精准化、智能化、高效化”的解决方案,破解了传统运维的核心痛点,实现了储能系统从“被动抢修”到“主动运维”的转型,为新型电力系统建设提供了重要支撑。当前,随着储能产业的快速发展,大数据与储能运维的融合将更加深入,未来将结合人工智能、物联网、区块链等技术,实现储能运维的全流程智能化——从设备故障的提前预警,到寿命的精准预测,再到运维策略的自动优化、调度协同的实时响应,进一步提升储能系统的安全性、经济性与可靠性。

getusushu的博客 88

SAP-ABAP:FI财务会计模块常用BAPI及核心用途实例说明

SAP FI模块的BAPI覆盖了从主数据管理、凭证过账到财务关账的全流程操作,是系统集成与自动化的重要工具。实际应用中需结合业务场景选择合适的BAPI,并严格遵循事务控制与校验规则。如需扩展功能,可通过BAdI或用户出口增强标准逻辑。

baidu_35680696的博客 1601

如何给小程序data数据中的对象中的某个属性赋值

1、如何给小程序data数据中的对象中的某个属性赋值 2、比如userCrad对象中的属性是输入框input获取的用离开焦点事件bindblur="bindblur"拿到input的值value data:{ userCrad:{ photoUrl:'', name:'', phone:'', companyNam...

webZRH的博客 2550

基于mengzi-t5训练生成式模型

【代码】基于mengzi-t5训练生成式模型。

开卷有益 170

小程序学习笔记-条件判断、方法、事件(4)

小程序之条件判断、方法、事件 1.条件判断 <!-- 条件判断 --> <view wx:if="{{flag}}"> <text>flag为true我会显示</text> </view> <view wx:else> <text>flag为false我会显示</text> </v...

键指江湖的博客 870

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

微信小程序 | 小程序的事件处理

const name = event.currentTarget.dataset.name // 那自定义属性,最好使用currentTarget拿。// const name = event.target.dataset.name // 这样是拿不到的 (点击中间蓝色视图)// 触发事件的组件:inner/蓝色 处理事件的组件:outer/粉色。// 2.currentTarget => 处理事件的元素。// 1.target表示 => 触发事件的元素。// 这个时候 这两个是没有区别的。

CoderHing的博客~ 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

微信小程序数组绑定使用案例(二)

/微信小程序 data 数据单项绑定,setData方法修改属性并且渲染页面展示。// this.data.name='李四';'name': '李四'//方案2,根据路径修改变量。3.css 代码忽略。

天马3798 1317

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【微信小程序入门到精通】— 事件绑定的详细解读

对于目前形式,微信小程序是一个热门,那么我们该如何去学习并且掌握之后去做实际项目呢?为此我特意开设此专栏,在我学习的同时也将其分享给大家!这一篇文章我们就涉及到事件绑定问题了,也就是我们小程序最重要的用户交互问题,我们是如何接收用户触发的信息并且处理的呢?这一篇文章将告诉你答案!如果在往下阅读的过程中,有什么错误的地方,期待大家的指点!大家每天都要开开心心的喔,让我们一起快乐的学习吧!

热爱生活,积极向上的阿酱! 6345

【微信小程序】一文解忧,事件绑定

本文对微信小程序中的事件绑定进行讲解,包括事件基础知识,以及事件进阶知识,大白话讲起,实例演示

weixin_62542181的博客 4793

【微信小程序】事件绑定,你搞懂了吗?

目录WXML 模板语法 - 事件绑定🍅1. 什么是事件🍒2. 小程序中常用的事件🥭3. 事件对象的属性列表🍍4. target 和 currentTarget 的区别🍊5. bindtap 的语法格式🍓6. 事件处理函数中为数据赋值🥕7. 事件传参🧅8. bindinput 的语法格式🎨9. 实现文本框和 data 之间的数据同步 target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。举例如下: ② 在页面的 .js 文件中...

Javascript_tsj的博客 7596

微信小程序-使用Component方法代替Page方法构造页面

在小程序js文件里使用Component方法代替Page方法需要在json文件里面定义usingComponents属性 二.注意事项 1.在page页面里使用的钩子函数和事件监听方法都需要卸载methods对象里面 2.接收页面参数 2.1 通过onLoad(options)里面的options里面有接收的参数值 传参页面代码 接收参数页面代码

weixin_42284031的博客 1427

微信小程序05 事件绑定与事件传参

一、什么是事件 (一)定义 事件是渲染层(页面)到逻辑层(JS)的通讯方式,通过事件可以将用户在渲染层的行为,传递到逻辑层进行事务处理。 事件对象可以携带额外信息,如 id, dataset, touches。 (二)小程序中常用的事件 类型 绑定方式 事件描述 tap bindtap或者bind:tap 手指触摸后马上离开,类似于HTML中的click事件 input bindinput或 bind:input 文本框的输入事件 change bindchange或bind:cha

m0_50707858的博客 6642

微信小程序事件绑定

微信小程序

实践求真知 3992

【微信小程序开发】小程序的事件处理和交互逻辑(最详细)

在微信小程序中,常见的事件类型包括点击事件(tap)、长按事件(longpress)、滑动事件(touchmove)、输入事件(input)、表单提交事件(submit)等。例如,当我们希望在触发事件的元素之前捕获事件,可以通过在组件上使用 capture-bind 或 capture-catch 属性来绑定事件。在上述代码中,当点击子元素时,子元素的事件处理函数会被触发,但父元素的事件处理函数不会被触发,因为我们调用了 event.stopPropagation() 方法阻止了事件的冒泡。

陈橘又青的博客 2万+

小程序开发中事件绑定的执行方法

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组。小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件。

CZ-001的博客 206

小程序--事件处理

Page({// 自定义属性})

sinat_34896766的博客 954
上一篇: 微信小程序中的事件绑定
下一篇: 微信小程序中实现页面跳转的方法
learning_tom
博客等级 码龄1年 157粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值