在jQuery中扩展已经delay()'d元素的延迟

时间:2011-10-28 06:34:12

标签: jquery

我有一个元素设置为在1500ms延迟后淡出。即:像:

$("<div>My Element</div>").appendTo("body").delay(1500).fadeOut(400);

有没有一种方法可以延长这个延迟期,同时元素的淡出还有待处理?

3 个答案:

答案 0 :(得分:1)

来自http://api.jquery.com/delay/

  

.delay()方法最适合在排队的jQuery之间延迟   效果。           因为它是有限的 - 例如,它没有提供取消延迟的方法。       delay()不是JavaScript的原生setTimeout函数的替代品,           这可能更适合某些用例。

所以我担心你只能使用javascript settimeout()

如果我错了,请纠正我。 :)

P.S。只是要补充一点,您可以使用.clearQueue()取消延迟动画。

答案 1 :(得分:1)

setTimeout() {
    function() {
        $("<div>My Element</div>").appendTo("body").fadeOut(400);
    }, 1500
}

答案 2 :(得分:0)

.delay()可能使用setTimeot()或setInterval()。我不确定你想要得到什么效果,但如果你想重置计时器(或重启它),你可以这样做:http://jsfiddle.net/rkw79/4AevQ/

var t;
$('div').click(function() {
    clearTimeout(t);
    t= setTimeout("$('div').fadeOut(400);", 1500);
});

$('div').trigger('click');

除非用户点击它,否则上面的代码会淡出'div'。