事件分为冒泡事件和非冒泡事件
➢冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递
➢非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递
冒泡事件列表如表2.9所示
类型 | 触发条件 |
---|---|
touchStart | 手指触摸动作开始 |
touchMove | 手指触摸后移动 |
touchCancel | 手指触摸动作被打断,如来电提醒,弹出窗口 |
touchEnd | 手指触摸动作结束 |
tap | 手指触摸后马上离开 |
longPress | 手指触摸后,超过350ms再离开,如果制定了事件回调函数,并触发了这个事件,tap事件将不被触发 |
longTap | 手指触摸后,超过350ms再离开(体检使用longPress事件代替) |
transitionEnd | 会在WXSS transition或wx.creatAnimation动画结束后触发 |
animationStart | 会在WXSS animation 动画开始时触发 |
animationIteratino | 会在WXSS animation一次迭代结束时触发 |
animationEnd | 会在一个WXSS animation动画完成时触发 |
touchforceChange | 支持3D Touch的iphone设备,重按时会触发 |
除表2.9外的其他组件自定义事件(如无特殊声明)都是非冒泡事件,如
- 的submit事件
- 的input事件
的scroll事件
使用bind绑定事件不会阻止冒泡事件向上冒泡,如果要阻止事件冒泡,可以使用catch
绑定事件,如示例2-14所示。
<view id="outer" bindTap="handleTap1">
outer view
<view id='middle' catchTap="handleTap2">
middle view
<view id="inner" bindTap="handleTap3">inner view</view>
</view>
</view>
在示例2-14中,单击inner view会先后调用handleTap3和handleTap2(因为tap事件会冒泡到middle view,而middle view阻止了tap事件冒泡,不再向父节点传递),单击middle view会触发handleTap2,单击outer view会触发handleTap1