解决方法:在u-switch 外面包一个view标签,并使用@tap.stop.prevent 可以阻止事件冒泡
.stop 阻止事件继续传播到父元素,prevent阻止事件默认行为
<view @tap.stop.prevent>
<u-switch v-model="val_switch" @change="change_switch" :asyncChange="true" space="2" size="24"></u-switch>
</view>
知识点补充:
1.事件冒泡:当一个元素的事件被触发时,会沿着父元素向上传递,直到根元素
2. 阻止事件冒泡常用的事件修饰符:文章来源:https://www.toymoban.com/news/detail-812015.html
- .stop: 阻止事件继续传播,阻止事件冒泡
- .prevent: 阻止事件的默认行为
- .capture: 使用事件捕获(从根节点开始向下传播)
- .self: 只在当前元素触发函数
3. uniapp 中 @tap和@click的区别:文章来源地址https://www.toymoban.com/news/detail-812015.html
- @tap 是组件触摸后立即会触发,没有延迟,会有事件穿透,适用于移动端开发
- @click 是组件点击触发,有300ms 延迟,
- 在微信小程序中 @tap 最终会转为 @click
到了这里,关于uniapp中u-switch子组件点击触发到父组件(阻止事件冒泡)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!