阻止事件冒泡
起因
公司内部的组件库的table无行点击,提了个pr来支持行点击。但是table点击行会有展开和复选框等事件。这样会产生影响。
解决
解决这个很简单,只需要对事件进行阻止他的冒泡就可以了。
因为我们知道,事件默认是不进行阻止冒泡的。
阻止冒泡直接stopPropagation
就好。对这个不了解可以看看我之前的学习资料
问题
对于展开等,阻止了冒泡就行了,但是对于input
的checkbox
却不起作用。
类似这样的操作之后,发现没有卵用。这尼玛,不对呀。
查了资料之后,是由于事件类型的原因。
子级的checkbox
和父级的click
事件不属于同一类型。
先说他们的区别:
onchange
这个事件发生在有
value
的元素上,onclick
这个基本发生在每个可见的元素上。
还有一些其他的区别,比如触发的时机。
再次解决
为
input的checkbox
添加一个click
事件,然后进行阻止冒泡,这样你就会发现冒泡被成功阻止。因为这只是针对目前仅有的元素进行冒泡,你也可以对其他标签进行阻止副作用,在行点击事件里查看当前元素是否为可交互类型。
在下认为
button
,input
,a
这些标签都是用户可能需要进行点击交互的,所以对这些标签进行检查。
Last updated