【问题标题】:jquery 1.4.2 equivalent for setTimeout and clearTimeoutjquery 1.4.2 等效于 setTimeout 和 clearTimeout
【发布时间】:2011-03-06 16:07:21
【问题描述】:

jquery 1.4.2 中的 setTimeoutclearTimeout 函数是否有任何等价物......我发现这个 ex 使用 jquery 1.3.2..

var alerttimer = window.setTimeout(function () {
            $alert.trigger('click');
            }, 3000);
            $alert.animate({height: $alert.css('line-height') || '50px'}, 200)
            .click(function () {
              window.clearTimeout(alerttimer);
              $alert.animate({height: '0'}, 200);
            });

【问题讨论】:

    标签: jquery settimeout equivalent jquery-1.4


    【解决方案1】:

    setTimeoutclearTimeout 是原生 JavaScript 方法,因此它们也可以在 jQuery 1.4.2 中使用 - 因此在 jQuery 中不需要等效方法。

    【讨论】:

    • @Pandiya,.delay() 方法的工作方式有点不同。是的,它是setTimeout 的包装器,但它用于队列中以延迟后续函数的运行。例如$('#foo').slideUp(300).delay(800).fadeIn(400);。这对你的情况没有帮助。
    【解决方案2】:
    $(document.body).delay(3000).show(1, function(){
        // do something
    });
    

    这将利用 jQuerys fx 排队来创建超时。要以这种方式模拟间隔,请使用在回调闭包中调用自身的函数。

    function repeat(){
         // do something
         $(document.body).delay(5000).show(1, repeat);
    }
    

    使用$(document.body).stop()清除fx队列并停止间隔。

    这类似于 javascript setTimeout 间隔“hack”。

    (function(){
        alert('I popup every 5 seconds! haha!');
        setTimeout(arguments.callee, 5000);
    })();
    

    【讨论】:

    • 请注意,.delay() 可能不会每 5 秒发生一次。事实上,由于执行时间的原因,它很可能会以稍大的间隔发生。 repeat() 中的代码需要时间执行,然后设置延迟。它有效,但它不会像 setInterval() 那样精确
    • @Ryan:你就在那儿。但是,由于UI queueecma-/javascript 中的计时器并不准确。例如setTimeout() 导致的是,在特定时间后向UI queue 添加一些代码。它不保证立即执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多