css - 如何检测是否在 React.js 中单击了伪元素(::after)
问题描述
我正在尝试检测元素::after
伪元素上的点击事件。
我希望这样的事情是可能的:
//css
div:after{
content:"X";
display:block;
}
//jsx
class PsudoExample extends Component{
render(){
return(
<div onAfterClick={() => {}}>
</div>
)
}
}
理想情况下,我想要一个不涉及使用document.queryselector
或类似的解决方案。
解决方案
我不相信有一种方法可以将点击事件与元素区分开来,它是 pesduo 元素——当用户点击任何一个元素时,都会触发相同的事件处理程序。
您可以做的一件事是使用 CSS 禁用pointer-events
宿主元素,同时允许pointer-events
元素的伪元素。这将为您提供一种“半途而废”的机制,仅用于检测对伪元素的点击:
div:after{
content:"X";
display:block;
pointer-events: initial;
}
div{
pointer-events:none;
}
这样,您将使用常规处理程序,该处理程序现在应该仅在单击元素onClick
时触发:::after
class PseudoExample extends Component{
render(){
return(
<div onClick={() => { console.log("after clicked"); }}>
I host a pseduo elements
</div>
)
}
}
希望有帮助!
推荐阅读
- php - 在 WooCommerce 单品页面中添加 OpenGraph 标签
- javascript - 错误:缺少步骤实现:[step_definition] with cypress & Cucumber when using Scenario outline with example
- r - 计算数据框中行中非零值的计数
- angular - 如何在浏览器中查看子组件、子组件或内部组件?
- microsoft-graph-api - Microsoft Graph:获取共享邮件文件夹的增量
- python - Pycharm Pytest 并行测试错误'E 夹具'驱动程序'未找到'任何人都可以帮助解决这个问题吗?
- vue.js - 从外部触发组件
- c# - 如何使用 Src asp.net 核心从同一解决方案中的另一个项目获取图像?
- html - 使用 CSS - 如何让文本位于图像的右侧?
- aws-lambda - Google Action 有时无响应