UPD:其实,你可以简单地使用默认队列和自由连锁效应(如show
)和非 - 影响(如val
)。只是包装后的queue
- dequeue
电话:
$("input")
.queue(function() { $(this).val("blah").dequeue() })
.delay(1000)
.queue(function() { $(this).val("").dequeue() })
.fadeOut(1000) // etc
http://jsfiddle.net/cA4jB/1/
/UPD
不,你不必(实际上不应该)使用的setTimeout。 jQuery为此提供了一个很好的内置机制,称为queue。其基本思路是这样的:你“收集”功能或延误命名队列:
$(elem).queue("queueName", function(next) { do something and call next() });
$(elem).queue("queueName", function(next) { do something else and call next() });
$(elem).delay(3000, "queueName");
$(elem).queue("queueName", function(next) { do something else and call next() });
,然后调用dequeue()
开始处理:
$(elem).dequeue("queueName")
队列中的每个函数被调用一个后另一个,并推迟如预期的工作。
行动中:http://jsfiddle.net/cA4jB/
'setTimeout'是这里最好的选择。 – 2012-03-09 16:19:09
你不能。 '.delay'用于动画; 'setTimeout'基本上用于其他任何事情。我确定'.delay'也在内部使用'setTimeout'。 – pimvdb 2012-03-09 16:19:40