如何让子元素的click事件不会影响到父元素的dbclick事件?
子元素有click事件,父元素有dbclick事件,想要做到快速双击子元素的时候,不要触发父元素的dbclick事件
<div @dblclick="changeFullScreen">
<div @click.stop="showPreset($event)">
</div>
</div>
showPreset(event) {
console.log('aaaaa')
// event.topImmediatePropagation()
// return false
}
changeFullScreen() {
console.log('bbbb')
}
尝试了给子元素添加阻止冒泡、return false等操作,均无效
回复
1个回答

test
2024-06-23
你这是事件冒泡使用错误,点击事件和双击事件都不是同一个事件,你阻止单击事件冒泡跟双击事件冒泡有什么关系呢?所以你要做的是在子元素上也绑定上双击事件,但是这个双击事件什么都不做。
有两种方式,第一种是子元素也绑定双击事件,该事件什么都不做只做阻止双击事件冒泡:
<div @dblclick="changeFullScreen">
// 在子元素上绑定双击事件并阻止双击事件冒泡
<div @click="showPreset($event)" @dbclick.stop="nothingFn">
</div>
</div>
// nothingFn 这个函数什么都不做
nothingFn() {};
showPreset(event) {
console.log('aaaaa')
// event.topImmediatePropagation()
// return false
}
changeFullScreen() {
console.log('bbbb')
}
第二种方式是利用事件冒泡的原理,查看事件对象event.target,通过这种方式判断到底是谁触发双击事件,如果是父元素就执行,如果是子元素就不执行。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容