jQuery在20秒不活动后淡出对象

时间:2012-02-24 12:54:15

标签: javascript jquery settimeout

如果用户未点击鼠标 20秒,我想淡出div。

我有以下代码:

if($('.main-popup2').is(":visible")){
    setTimeout(function() {
        $('.main-popup2').fadeOut('fast');
    }, 20000);
}

问题是我在检测到用户鼠标点击后不知道如何重置setTimeout。

谢谢!

3 个答案:

答案 0 :(得分:7)

.setTimeout()方法实际上返回对它创建的计时器的引用。可以在.clearTimeout中使用此引用来在计时器执行之前停止计时器。

以下是如何使用它的示例:

var timer;

if($('.main-popup2').is(":visible")){
    // create the timer and save its reference
    timer = setTimeout(function() {
        $('.main-popup2').fadeOut('fast');
    }, 20000);
}

// when clicking somewhere on the page, stop the timer
$(document).click(function() {
    clearTimeout(timer);
}):

答案 1 :(得分:1)

var timeout = null;
var fadeElement = $('.main-popup2');

function fader() {
    if(null !== timeout) {
        clearTimeout(timeout);
    }
    fadeElement.stop();
    timeout = setTimeout(function () {fadeElement.fadeOut('fast');}, 2000);
}

$(document).click(fader);
fader();

答案 2 :(得分:1)

使用延迟功能。

(window).click(function () {
   $('.main-popup2').delay(6000).fadeOut(300);
}

每次点击重启6秒,之后重播.main-popup2 fadeout如果没有'