Jquery 防止悬停时隐藏元素。悬停时清除超时,鼠标移动时设置超时

标签 jquery settimeout mousemove

我正在尝试实现侧边栏,当鼠标光标停止移动时,两个导航按钮会延迟隐藏。当鼠标光标再次移动时,应该会出现元素。代码工作正常,但是...... 如何防止三个元素在悬停状态时隐藏。

我应该在哪里添加悬停状态的clearTimeout?我是不是该?抱歉,我是 jQuery 的初学者。

这是我的代码:

html:

<div class="container">
<nav>
    <ul>
        <li><a href="#">something</a></li>
    </ul>
</nav>
<div class="prev">prev</div>
<div class="next">next</div>
</div>

CSS

.container { position: absolute; left: 20px; top: 2px; right:2px; bottom: 20px; border: 1px solid red; }
nav { position: absolute; left: 0; top:0; bottom: 0; border: 1px solid blue; }
.prev { position: absolute; width: 50px; height: 30px; bottom: 0; left: 45%; border: 1px solid green; }
.next { position: absolute; width: 50px; height: 30px; top: 0; left: 45%; border: 1px solid green; }

JS

var timeout = false;
var count = $(function() {
$('.container').mousemove(function(e) {
    clearTimeout(timeout);
    timeout = setTimeout(function() {
        console.log('hide slideshow elements');
        $('.container nav').fadeOut();
        $('.prev').fadeOut();
        $('.next').fadeOut();
    }, 2500);            
});
});

$(".container").mousemove(function() {
console.log('show slideshow elements');
$('.container nav').fadeIn();
$('.prev').fadeIn();
$('.next').fadeIn();
});

还有 JSfiddle

http://jsfiddle.net/h3wDt/3/

最佳答案

我检查了事件目标标记名以查看它是否是 anchor 标记。似乎也有效。

var timeout = false;
var count = $(function() {
    $('.container').mousemove(function(e) {
        $('.container nav').fadeIn();
        $('.prev').fadeIn();
        $('.next').fadeIn();
        clearTimeout(timeout);
        if (e.target.tagName != "A") {
            timeout = setTimeout(function() {
                console.log('hide slideshow elements');
                $('.container nav').fadeOut();
                $('.prev').fadeOut();
                $('.next').fadeOut();
            }, 2500);            
        }
    });
});

JS Fiddle

关于Jquery 防止悬停时隐藏元素。悬停时清除超时,鼠标移动时设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214988/

相关文章:

javascript - 加载大量数据时防止 "Stop running script"

javascript - 在 Javascript 中使用 setTimeout 从数组调用函数

jquery - 当您快速移动鼠标时,鼠标移动速度会变慢

javascript - Javascript mousemove 事件处理程序会阻止 mousemove 事件吗?

c++ - 通过单击内部小部件而不是标题栏来移动窗口

jquery - 导航栏中的(右)幻灯片溢出主体问题

javascript - 我试图在输入字段为空时回显警报,但它总是回显警报

javascript - jQuery 显示/隐藏不起作用

javascript - window.print() 尝试在完成渲染之前打印一个页面(动态创建的)

javascript - 如何在 jQuery 中编辑数据属性值?