记录开发路上的小坑:elementui中表格cell-click 与 模板中 插入自己的 checkbox的change事件冲突

1、坑的背景:开发页面,需要自己写一个表格的行选中功能以及checkbox的选中,如图:

 这个是可以正常运行的代码,不正常的是把 checkbox外面的span删除,出现的情况是:设置了cell-click  以及 el-checkbox的change方法后,我点击列表的行,ok完成了勾选,我再次点击列表的勾选框,好了,完全没反应!!!

反正最后原因找到了,因为涉及的微任务与宏任务的执行方式以及vue数据更新的原理,大佬跟我讲了半天,我才明白。

 

1、当我点击表格行的时候(除了checkbox区域),可以正常被勾选,但是我点击checkbox的时候,完全不起作用,我以为的是element的bug,两个冲突了,其实并不然。

2、加外面那一层的意思,本质上就是为了阻止事件冒泡!!!,通过打印事件event,我发现点击checkbox的时候,会触发两次事件!一次是基于checkbox外层的span容器(label),这个点击事件会先被触发,然后这个cehckbox会被在一瞬间选中,但是此时dom节点并没有被更新,checkbox还是未被选中的状态,真正被选中的只是el-chekbox的样式生效!!然后这个事件继续冒泡触发了checkbox上的change事件,此时checkbox被勾选。随后来自checkbox的change事件生效(说白了会被触发两次),拿到当前checkbox的状态为已选中,然后就被重新置为false状态,所以无论怎样,都无法选中。所以在checkbox外面外面自己套一层标签(只要你觉得合适都可以的),阻止checkbox的点击事件向上冒泡到 table的子元素label上面去,从而触发到点击行的情况。这里不明白的可以看一下

jQuery event.stopPropagation() 方法 | 菜鸟教程  stopPropagation方法的含义。

其他疑问或者见解可以跟我保持沟通,增进认知,感谢阅读~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值