【发布时间】:2020-04-09 01:11:00
【问题描述】:
我可以为这两个元素触发click 事件吗?
-
position: relative容器- 元素 1: 常规 div
-
元素 2:
position: absolutediv
IRL 元素 2 是一个透明背景,用于监听标题顶部的点击以隐藏导航抽屉。但是如果用户点击 Header 标志,我想隐藏导航抽屉,但我也想导航到主页。
有可能吗?有什么办法可以解决这个问题?
function App() {
function handleClick1() {
console.log('From handleClick 1 behind div...');
}
function handleClick2() {
console.log('From handleClick 2 absolute div...');
}
return(
<div className="container">
<div className="normal" onClick={handleClick1}>
Only the absolute DIV click is fired.
</div>
<div className="absoluteDiv" onClick={handleClick2}>
</div>
</div>
);
}
ReactDOM.render(<App/>, document.getElementById('root'));
div.container {
position: relative;
width: 150px;
height: 150px;
}
div.normal {
width: 100%;
height: 100%;
cursor: pointer;
}
div.absoluteDiv {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(55,55,55,0.3);
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script>
<div id="root"/>
【问题讨论】:
-
我不明白你到底想要什么?您希望在单击时同时单击两个元素?
-
你想错了。您的事件逻辑应该发生得更高。因此,假设您有两个元素的父容器,您希望事件“触发”,但这实际上不是您想要的 - 在反应数据更改视图中,所以假设您使用点击事件“eventFired:true”进行更改,如果它是比更改要折叠的元素的 CSS 更真实。并使用生命周期方法知道何时重定向到其他路由。
-
你们是对的。我确实最终在更高的层次上处理它。但是我仍然很好奇这个“技巧”是否可能。但我想不是。
标签: javascript html css reactjs