微信小程序 bindtap 和 catchtap 的区别

微信小程序中两种点击事件的事件冒泡处理差异

问题

微信小程序中 bindtapcatchtap 有什么区别?

解答

两者都是点击事件,主要区别在于事件冒泡的处理方式:

bindtap - 不会阻止事件冒泡,点击事件会向父元素传递

<view bindtap="parentTap">
  <view bindtap="childTap">点击我</view>
</view>

点击子元素时,会依次触发 childTapparentTap

catchtap - 阻止事件冒泡,点击事件不会向父元素传递

<view bindtap="parentTap">
  <view catchtap="childTap">点击我</view>
</view>

点击子元素时,只会触发 childTap,不会触发 parentTap

关键点

  • 两者都是点击事件处理函数
  • bindtap 允许事件冒泡,会触发父元素的点击事件
  • catchtap 阻止事件冒泡,只触发当前元素的点击事件
  • 根据业务需求选择:需要冒泡用 bind,需要阻止冒泡用 catch