jquery - jQuery 中切换时的 setTimeout

标签 jquery toggle settimeout fade

当鼠标悬停在菜单项上时,我的菜单会显示一个图标和一些文本。不幸的是,当从顶部悬停到底部(然后返回)时,淡入淡出动画会使所有图像和文本相互淡入淡出,这看起来不太好。

我正在寻找一种在切换开关上放置 setTimeout 的方法,以便仅当用户将鼠标悬停在菜单项上超过 1 秒时才会显示图标和文本。如果用户将鼠标快速悬停在菜单项上,则不会显示图标和文本。

这是我现在拥有的 jQuery:

$('.button').hover(function () {
 var id = $(this).attr('id').substr(4);
 $('.content').not('#photo' + id).fadeOut();
 $('.text').not('#info' + id).fadeOut();

 $('#photo' + id).fadeToggle();
 $('#info' + id).fadeToggle();
});


$('.button').mouseout(function () {
    $('.content').fadeOut();
    $('.text').fadeOut();
});

我用一个实例制作了一个jsfiddle:http://jsfiddle.net/MaxdeMooij/9ozqgLwq/ Slidetoggles 上有一些关于 setTimeout 的主题,但我无法将这些解决方案集成到我的代码中。谁能帮我?那就太好了。

感谢您的帮助!

最佳答案

这是使用计时器的另一种解决方案。这个保持淡出效果。

var timerHandle = null;
$('.button').hover(function() {
    if (timerHandle != null) {
        clearTimeout(timerHandle);
        timerHandle = null;
    }
    timerHandle = setTimeout($.proxy(function() {
        var id = $(this).attr('id').substr(4);
        $('.content').not('#photo'+id).fadeOut();
        $('.text').not('#info'+id).fadeOut();

        $('#photo'+id).fadeToggle();
        $('#info'+id).fadeToggle();
    }, this), 500);
});

$('.button').mouseout(function(){
    $('.content').fadeOut();
    $('.text').fadeOut();
    if (timerHandle != null) {
        clearTimeout(timerHandle);
        timerHandle = null;
    }
});

一个jsFiddle已提供。

关于jquery - jQuery 中切换时的 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790904/

相关文章:

javascript - 更改文本框模糊的属性值

jQuery 在切换中制作动画

javascript - 使用克隆的 div 切换类

javascript - 动态存储对 setTimeout() 的引用

javascript - 我的 Greasemonkey 脚本中的 setInterval() 忽略给定的时间并不断执行

javascript - 清除 'looped' 超时在函数中关闭 - 如何返回我能够清除它的间隔 ID

javascript - 单击同级时关闭下拉菜单

php - 将 PHP 上的结果通过电子邮件发送到用户输入的电子邮件地址

jquery - 如何动画滚动到 div 中的段落顶部?

comments - Pydev 注释切换添加缩进