
Vue中防止子元素点击事件干扰父元素双击事件
在Vue应用中,子元素的click事件可能会干扰父元素的dblclick事件,尤其是在快速双击子元素时。本文提供两种解决方案。
问题示例:
假设有以下Vue组件:
简单使用@click.stop并不能解决问题,因为click和dblclick是不同的事件。
立即学习“前端免费学习笔记(深入)”;
解决方案一:在子元素上添加空双击事件
在子元素上添加一个@dblclick事件,并绑定一个空函数,阻止双击事件冒泡:
noop函数什么也不做,但阻止了dblclick事件向上冒泡。
解决方案二:在父元素事件处理函数中判断事件目标
在父元素的dblclick事件处理函数中,检查event.target是否为父元素本身。只有当双击事件直接作用于父元素时,才执行相应操作:
this.$el指向父元素的DOM节点。只有当event.target与this.$el相等时,才执行console.log('bbbb')。
两种方法都能有效防止子元素点击事件干扰父元素双击事件,选择哪种方法取决于具体情况和个人偏好。 第一种方法更简洁直接,第二种方法更灵活,可以根据需要在父元素双击事件中添加更多逻辑判断。










