jQuery 设置超时

标签 jquery settimeout

我想为此工具提示代码添加一个超时,这样它仅在鼠标悬停在其上一段时间后而不是立即显示...我尝试添加 setTimeout() 但我无法弄清楚如何使用 clearTimeout() 因此工具提示不会在鼠标移开时隐藏。你能帮忙吗?

// -----------------------------------------------
// TOOLTIP MOUSE HOVER
// -----------------------------------------------
function mcTooltip() {
    $('.mcTxb').mousemove(function(e) {
        var mcHoverText = $(this).attr('alt');
        var mcTooltip = $('.mcTooltip');
        $(mcTooltip).text(mcHoverText).show('fast');
        $(mcTooltip).css('top', e.clientY + 10).css('left', e.clientX + 10);
    }).mouseout(function() {
        var mcTooltip = $('.mcTooltip');
        $(mcTooltip).hide('fast');
    });
}
mcTooltip();

我尝试过这个:

    // -----------------------------------------------
// TOOLTIP MOUSE HOVER
// -----------------------------------------------
function mcTooltip() {
    $('.mcTxb').mousemove(function(e) {
        var mcHoverText = $(this).attr('alt');
        var mcTooltip = $('.mcTooltip');
        setTimeOut(function(){
            $(mcTooltip).text(mcHoverText).show('fast');
        }, 300);
        $(mcTooltip).css('top', e.clientY + 10).css('left', e.clientX + 10);
    }).mouseout(function() {
        var mcTooltip = $('.mcTooltip');
        $(mcTooltip).hide('fast');
    });
}
mcTooltip();

最佳答案

当您使用动画时,您可以使用 .delay()推迟工具提示的出现:

$(mcTooltip).text(mcHoverText).delay(1000).show('fast');

在您的 mouseout 函数中,使用 .stop取消任何现有的延迟或动画,然后隐藏工具提示:

$(mcTooltip).stop(true).hide('fast');

关于jQuery 设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610272/

相关文章:

javascript - 在 Javascript 中切换 <a href> 的颜色

javascript - 通过 Ajax 加载的 PHP 未执行

vue.js - 1 秒后自动隐藏 VueJS 中的元素

javascript - 我的心跳没有因超时值而暂停

javascript - for 循环中嵌套 if 条件的 setTimeout

javascript - 如何更改滚动条上的事件类别?

javascript - 从 2 个输入获取并同时替换

javascript - 即使未填写字段,表单也会以经过验证的方式返回

javascript - 延迟后运行工作 javascript onload 的最佳方法

javascript - 防止递归函数运行 setTimeout 复合