- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当悬停在相邻文本上时,我需要使隐藏按钮可见。这是通过 onMouseEnter
和 onMouseLeave
事件完成的。但是当点击另外的文本时,我需要使按钮完全可见并停止 onMouseLeave
事件。
到目前为止,我已经尝试过:尝试使用 removeEventListener
删除 onMouseLeave
事件。
我知道我们可以借助像这样的变量来做到这一点:
const mouseOut = (divId) => {
if (!wasClicked)
document.getElementById(divId).style.visibility = "hidden";
}
但由于我有太多不同的按钮和文本,我也不想使用变量。
<div className="step-buttons" onMouseEnter={mouseOver.bind(this, 'feature')}
onMouseLeave={mouseOut.bind(this, 'feature')}
onClick={showButtonOnClick.bind(this, 'feature')}>Test Suite
</div>
有什么可以帮助我的吗?
任何建议都会很受欢迎,提前致谢:)
最佳答案
方式一:您可以在 MouseEnter 函数中安装一个用于离开的事件监听器,并使用 refs 在 onClick 事件处理中将其删除,如下所示:
constructor(props) {
super(props);
this.text;
this.onMouseLeave = this.onMouseLeave.bind(this);
}
onMouseEnter(){
//apply your styles
this.text.addEventListener('mouseleave', this.onMouseLeave);
}
onMouseLeave(){
//remove your styles
}
showButtonOnClick(){
//remove the eventlistener
this.text.removeEventListener('mouseleave', this.onMouseLeave);
}
render(){
return(
<div ref={(thiscomponent) => {this.text = thiscomponent}}
onMouseEnter={this.onMouseEnter.bind(this, 'feature')}
onClick={this.showButtonOnClick.bind(this, 'feature')}>
Test Suite
</div>);
}
ref 只是对您的 div 的引用,因此您可以将事件监听器挂载到它。您必须在构造函数中绑定(bind)该函数,因为 .bind(this)
将在您调用它时创建一个新函数,以防止多次安装事件处理程序。
方法 2(可能更好):另一种方法是保存对状态中文本的点击,并根据此有条件地更改 onMouseLeave 函数的作用:
constructor(props) {
super(props);
this.state={
clicked: false,
}
}
onMouseEnter(){
//apply your styles
}
onMouseLeave(){
if(!this.state.clicked){
//remove styles
}
}
showButtonOnClick(){
this.setState({clicked: true});
}
render(){
return(
<div
onMouseEnter={this.onMouseEnter.bind(this)}
onMouseLeave={this.onMouseLeave.bind(this)}
onClick={this.showButtonOnClick.bind(this)}>
Test Suite
</div>);
}
关于javascript - 如何在 onClick 事件(ReactJS)之后停止 onMouseOut 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48060660/
我有这个脚本: $(document).ready(function(){ $('.infoLink').hover(function(){ $('.s
我有一个图像,当用户将鼠标悬停在图像上时,该图像会更改为新图像。单击新图像后,就会播放音频文件。当用户鼠标移出图像时,图像将恢复为默认图像。问题是音频仍在播放。我不太擅长js,当用户鼠标移出时如何让音
在尝试根据以下教程实现下拉菜单时,我遇到了一个奇怪的问题:http://www.webchief.co.uk/blog/simple-jquery-dropdown-menu/index.php当我的
所以我有一个带有 3 个圆圈的导航和一个 jquery slider 。 默认情况下,第一个圆圈点亮,当用户点击第二个圆圈时, slider 移动到第二个 div,然后那个圆圈点亮,第一个圆圈变暗。这
如何在 onmouseout 时关闭组合框? Volvo Saab Mercedes Audi 最佳答案 你不能(可靠地)做到这一点。出现的弹出窗口无法以编程方式进行操作,即打开或关闭,其
因此,当您将鼠标悬停在 article 元素上时,这段代码会播放一段音频。问题是当鼠标悬停在子元素上时它会停止。当鼠标悬停在一般 article 元素上并悬停在子元素上时,如何使 Stopsound
我正在尝试显示/隐藏按钮中的一些 文本。按钮是 S.O.S javascript代码是 function show() { sos_left=docu
所以这是一个非常简单的问题,但研究它,我只能找到更复杂情况的答案。这是我的: 我在母版页上有一张图片,当您将鼠标悬停在它上面时,它下方会显示一个面板(主要使用 css)并且该面板中有链接。因为母版页相
我目前正在将我网站的菜单从纯 JavaScript 切换到 jQuery。我的菜单有滚动效果。 菜单有一个外包装,其中设置了一个 onmouseout 事件。如果触发,则检查 relatedTarge
我正试图将鼠标悬停在上面以调出一个菜单。我的 javascript 工作得有点正确。当我将鼠标悬停在链接或菜单上时,菜单保持显示状态。但是,当我鼠标移出时,我遇到了问题。我的菜单 div 按原样消失了
在 Javascript 中,我希望 onmouseout 事件在生效之前休眠/暂停/等待/(不确定这里的术语是否正确)三秒钟。这是如何实现的? 谢谢 最佳答案 function outfunctio
我有一个悬停元素,当用户将鼠标悬停在它上面时,将从隐藏元素中获取文本,当它悬停时,它将重新分配其先前的值。 我的 html 有点像这样。 Hover Here Lorem ipsum dolor
基本上我将翻转从我的 css 转换为 javascript。我还选择了其中一张页面加载后要选择的图片。但是我在处理 onMouseOut 事件时遇到了麻烦。除了那张照片,一切都很完美。当我将鼠标悬停在
我有一个 iframe #viewer 和一个出现在其上方的绝对定位元素 #appear_above_viewer。我希望 #appear_above_viewer 在鼠标经过 #viewer 时淡入
我有这个 html: 这个 javascript 函数: function pinkImg(x) { x.innerHTML = ''; } function
在我们所有的页面上,顶部都会显示一条重要消息。页面加载时,该消息看起来像浅灰色背景下的纯红色文本(与页面的其余部分相同)。如果用户想要更新它,他们可以单击它并调用 editMsg 函数,这使得它看起来
我有一个要求,我必须根据 mouseover 和 mouseout 事件显示替代元素。 默认元素是一个超链接(它会一直显示,除了在鼠标悬停时),备用元素是一个下拉列表元素(它应该在超链接的鼠标悬停时显
我试图弄清楚如何清除 JavaScript onmouseleave 事件上特定 HTML ID 的内容。我的 onmouseover 工作得很好,但 onmouseout 却不行。 这是一个导航栏(
这是它不起作用的部分: function showDetailedView(element) { var img = document.getElementById(element); img
我一直在尝试做的是我有一个框,其中显然包含文本,我希望每当它悬停时,删除当前内容并添加另一个内容,当它悬停时,取回旧的。正如您所意识到的那样,我的尝试进行得并不顺利,我想知道什么是 exacy 问题。
我是一名优秀的程序员,十分优秀!