微信小程序编写如下要求的程序: 绑定并阻止事件冒泡: 定义三层view,inner view、middle view、outer view,并绑定事件,点击 inner view 会先后调用handleTap3和handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outer view 会触发handleTap1,在控制台通过日志输出观看效果。
时间: 2024-02-01 08:15:26 浏览: 84
微信小程序新增拖动组件:movable-view
您好,以下是一个简单的实现示例:
```html
<!-- wxml代码 -->
<view class="outer" bindtap="handleTap1">
outer view
<view class="middle" bindtap="handleTap2" catchtap="stopPropagation">
middle view
<view class="inner" bindtap="handleTap3">
inner view
</view>
</view>
</view>
```
```js
// js代码
Page({
//handleTap1为点击outer view时触发的事件处理函数
handleTap1: function() {
console.log('outer view');
},
//handleTap2为点击middle view时触发的事件处理函数
handleTap2: function() {
console.log('middle view');
},
//handleTap3为点击inner view时触发的事件处理函数
handleTap3: function() {
console.log('inner view');
},
//stopPropagation为阻止事件冒泡的函数
stopPropagation: function(e) {
e.stopPropagation();
}
})
```
解释一下代码:
1. 在 wxml 中,我们定义了三个 view,它们分别有不同的 class 名称,用于在 JS 中区分它们。
2. 我们在每个 view 上绑定了一个 tap 事件处理函数,分别为 handleTap1、handleTap2 和 handleTap3。
3. 我们给 middle view 绑定了 catchtap 事件处理函数 stopPropagation,用来阻止事件冒泡。
4. 在 JS 中,我们定义了三个事件处理函数,它们分别输出相应的日志信息。
5. 我们还定义了一个阻止事件冒泡的函数 stopPropagation,它会在 middle view 上捕获 tap 事件,并阻止它向父节点传递。
当我们点击 inner view 时,会依次输出 inner view、middle view 的日志信息;当我们点击 middle view 时,只会输出 middle view 的日志信息;当我们点击 outer view 时,只会输出 outer view 的日志信息。这就说明了事件冒泡被正确地阻止了。
阅读全文