我有这样一个场景,当点击父元素时,它会翻转以显示具有不同颜色的子元素。不幸的是,当用户点击其中一种颜色时,父元素上的'click'事件也会被触发。
- 如何在单击子项时停止父项上的事件触发器?*
我想知道可能的解决方案:
1.你是说CSS?
单击子级时将pointer-events : none
类附加到父级。但是,这意味着以后需要清除父级中的pointer-events
类。
1.使用参考?
记录React
父元素的ref
,并在单击子元素时,将event.target
与ref进行比较?我不喜欢这样,因为我不喜欢全局ref
。
的想法和更好的解决方案将不胜感激。问题是:如何在单击子项时停止父项上的事件触发器?
7条答案
按热度按时间7ivaypg91#
您可以使用
stopPropagation
stopPropagation
-防止当前事件在冒泡阶段进一步传播第一个
vbkedwbf2#
我在React中遇到了同样的问题,并使用下面的解决方案解决了它:
2uluyalo3#
另一个解决方案是将以下内容附加到父级上的事件回调:
通过这种方式,您可以拦截源自附加DOM节点的事件,并将不相关的事件中继到下一个节点。
9fkzdhlc4#
我想在道具上调用函数,但同时又想阻止事件从子级传播到父级,下面是它的处理方式
5vf7fwbs5#
我觉得这个解决方案最干净。谢谢@JohnFash!
以下是对此进行更详细解释的尝试:当鼠标进入父元素时,currentTarget被设置(事件),然后当它进入子元素时,目标发生变化。如果不进行检查,父元素的onClick会触发,因为mouseleave事件还没有触发。
pxiryf3j6#
老 问题 , 但 有 麻烦 , 然后 解决 了 它 自己 , 我 只是 停止 了 ' 子 ' div 上 的 事件 一样 , 所以 这 然后 通过 儿童 传递 下来 , 所以 你 可以 在 你 想 让 这 停止 点击 事件 的 地方 ;
中 的 每 一 个
bwitn5fc7#
我在使用Material-UI DataGrid时遇到了这个问题,并使用以下代码解决了这个问题:
event.defaultMuiPrevented = true;
例如: