当前位置: 首页 > news >正文

微信小程序事件绑定基本语法

微信小程序使用 bind 或 catch 前缀绑定事件,语法如下:

<组件 bind事件名="处理函数" catch事件名="处理函数"></组件>
  • bind:事件绑定,允许事件冒泡(向父组件传递)。

  • catch:事件绑定,阻止事件冒泡(不会向父组件传递)。

常见事件类型

事件名说明适用组件
tap点击事件viewbutton
input输入框内容变化inputtextarea
submit表单提交form
scroll滚动事件scroll-view
longpress长按事件(350ms)viewbutton

二、事件绑定示例

1. 点击事件(bindtap / catchtap

<!-- 点击事件(允许冒泡) -->
<view bindtap="handleTap">点击我</view>

<!-- 阻止冒泡 -->
<view catchtap="handleNoBubbleTap">点击我(不冒泡)</view>
Page({
  handleTap() {
    console.log("点击事件触发");
  },
  handleNoBubbleTap() {
    console.log("点击事件触发,但不会冒泡");
  }
});

2. 输入事件(bindinput

<input bindinput="handleInput" placeholder="输入内容" />
Page({
  handleInput(e) {
    console.log("输入内容:", e.detail.value);
  }
});

3. 表单提交(bindsubmit

<form bindsubmit="handleSubmit">
  <input name="username" placeholder="用户名" />
  <button form-type="submit">提交</button>
</form>
Page({
  handleSubmit(e) {
    console.log("表单数据:", e.detail.value);
  }
});

三、事件对象(event

事件处理函数的参数 event 包含以下关键属性:

属性说明
type事件类型(如 tapinput
target触发事件的组件(原始事件源)
currentTarget当前绑定事件的组件
detail额外信息(如输入框的值)
timeStamp事件触发时间戳
touches触摸点信息(多指触控)

获取 data-* 自定义数据

<view data-id="123" bindtap="handleDataTap">点击获取 data-id</view>
Page({
  handleDataTap(e) {
    const id = e.currentTarget.dataset.id; // 123
    console.log("data-id:", id);
  }
});

四、阻止事件冒泡(catch vs bind

  • bind:允许事件向上冒泡(父组件也会触发相同事件)。

  • catch:阻止事件冒泡(仅当前组件触发)。

示例

<view bindtap="parentTap">
  <view catchtap="childTap">点击我(不会触发父组件的 tap)</view>
</view>
Page({
  parentTap() {
    console.log("父组件点击"); // 不会执行(因为子组件用了 catchtap)
  },
  childTap() {
    console.log("子组件点击");
  }
});

五、自定义组件事件(triggerEvent

如果使用自定义组件,可以通过 triggerEvent 触发父组件的事件:

子组件

Component({
  methods: {
    handleTap() {
      this.triggerEvent("customevent", { data: "Hello" });
    }
  }
});

父组件

<child bindcustomevent="handleCustomEvent" />
Page({
  handleCustomEvent(e) {
    console.log("自定义事件数据:", e.detail.data); // "Hello"
  }
});

六、总结

场景推荐写法
普通点击事件bindtap="handleTap"
阻止冒泡catchtap="handleTap"
表单输入bindinput="handleInput"
表单提交bindsubmit="handleSubmit"
自定义组件通信triggerEvent + bind事件名

相关文章:

  • 360地图手机版昆明百度推广优化
  • asp.net 网站管理系统电商运营方案
  • 门户网站开发的价格购物网站有哪些
  • 华为云服务器怎么做网站国外十大免费服务器和域名
  • 四川建设网官网站seo基本流程
  • 建设网站收取广告费用短视频营销优势
  • 折叠屏手机:技术进步了,柔性OLED面板测试技术需求跟上了吗?
  • 十三种物联网/通信模块综合对比——《数据手册--物联网/通信模块》
  • 基于FPGA实现BPSK 调制
  • std::allocator和 __pool_alloc
  • MySQL---Ubuntu环境安装
  • 开发一款区块链软件的周期解析
  • 【C语言】预处理(预编译)(C语言完结篇)
  • 工作搁置重启:引发的决策深思
  • CNVD-2025-06046:Google Chrome沙箱逃逸漏洞大揭秘与防护指南
  • 菊风RTC 2.0 开发者文档正式发布,解锁音视频新体验!
  • Java 解析日期格式各个字段含义温习
  • QML 中 Z 轴顺序(z 属性)
  • L2-034 口罩发放
  • 太阳能晶片计数系统 源代码
  • 开源推荐#5:CloudFlare-ImgBed — 基于 CloudFlare Pages 的开源免费文件托管解决方案
  • Qt 元对象系统探秘:从 Q_OBJECT 到反射编程的魔法之旅
  • 商品详情 API 返回数据字段说明
  • Java基础 - 反射(2)
  • dd命令刻录CENT OS10 (.iso)光盘镜像文件到U盘
  • 基于深度学习模型去预测材料的吸声性能