如果未经过时间,取消鼠标悬停
Cancelling mouseover if time not elapsed
如果有人将鼠标悬停在文本框上一秒钟,我想显示一个div。但我不希望它显示如果他们只是快速地将鼠标悬停在文本框上。
<input type="text" value="Fred" onmouseover="overit()">
<div id="dv" style="display:none">Jim</div>
var delay;
function overit()
{
delay = window.setTimeout('showme();', 1000);
}
function showme()
{
document.getElementById('dv').style.display = 'block';
}
除非有人将鼠标悬停在文本框上一秒钟,否则我不想调用showme()。如果鼠标移过和鼠标移出之间的间隔不至少一秒,我如何取消showme()被调用?
拨弄http://jsfiddle.net/S4jx4/
我不想使用jquery你提出的解决方案基本可行。在输入端添加onmouseout
监听器,取消超时
<input type="text" value="Fred" onmouseover="overit()" onmouseout="window.clearTimeout(delay);">
http://jsfiddle.net/TN952/你知道函数将在1秒后被调用,所以你不需要检查间隙是否存在,你只需要在mouseleave发生时取消超时。如果它已经被调用了,那么它被调用的时间不到一秒,取消它不会影响任何事情。
var delay;
function overit()
{
delay = window.setTimeout('showme();', 1000);
}
function showme()
{
document.getElementById('dv').style.display = 'block';
}
function leaveit() {
window.clearTimeout(delay);
}
<input type="text" value="Fred" onmouseenter="overit()" onmouseleave="leaveit()">
<div id="dv" style="display:none">Jim</div>
http://jsfiddle.net/hXE28/删除内联javascript
<input type="text" value="Fred" id="txt" />
<div id="dv" style="display:none">Jim</div>
和使用事件监听器
var input = document.getElementById('txt'),
text = document.getElementById('dv'),
timer;
input.addEventListener('mouseenter', function() {
timer = setTimeout(showme, 1000);
}, false);
input.addEventListener('mouseleave', function() {
clearTimeout(timer);
}, false);
function showme() {
text.style.display = 'block';
}
小提琴
相关文章:
- 如何取消d3.js中的鼠标悬停转换
- 在鼠标悬停/取消悬停父元素时,更改子图像的url哈希
- 在YouTube视频上单击鼠标静音/取消静音
- 如何使用onmouseover和onmouseout在鼠标经过按钮时隐藏和取消隐藏按钮
- 顶级/下级菜单上的隐藏()延迟问题,但当鼠标再次进入时取消隐藏()
- 传单 - 鼠标悬停,单击和取消单击
- 临时取消绑定鼠标输入从元素
- 鼠标悬停会影响 span 标记中换行符的取消
- 在弹出图像事件上绑定和取消绑定鼠标滚轮 - JQuery
- 将鼠标悬停在地图上时,取消选择图像映射的选定区域
- 当鼠标按下孩子时取消单击父级
- 取消模糊图像中鼠标悬停在上面的部分
- 鼠标向上时取消功能
- 用鼠标移动取消onclick
- 取消IE9触摸滚动事件并调用鼠标移动(可能)
- 取消鼠标向上事件处理程序中的单击事件
- 取消鼠标悬停事件的有效方法.继续往下读,看看为什么
- 如果未经过时间,取消鼠标悬停
- GMaps v3:如何在鼠标滚动地图之前取消鼠标滚动事件
- 取消鼠标悬停时的Jquery滑动条事件