我无法使 jQuery 的延迟函数与append
函数一起使用。怎么了?有没有办法让它工作?我想避免setTimeout
直接使用,以使客户更容易遵循,他们将自己维护它,没有任何经验。
我的代码:
$('#chatwindow').append('test').delay(2000).append('test');
在这段代码中,我同时打印了“testtest”,delay
被忽略了。
我无法使 jQuery 的延迟函数与append
函数一起使用。怎么了?有没有办法让它工作?我想避免setTimeout
直接使用,以使客户更容易遵循,他们将自己维护它,没有任何经验。
我的代码:
$('#chatwindow').append('test').delay(2000).append('test');
在这段代码中,我同时打印了“testtest”,delay
被忽略了。
这是因为默认情况下delay(2000)
对队列进行排队,而该队列从不属于其中的一部分。fx
append()
相反,您可以append()
使用该queue()
函数专门对其进行排队。
$('#chatwindow').append('test').delay(2000).queue(function (next) {
$(this).append('test');
next();
});
您可以在此处查看此工作的示例;http://jsfiddle.net/mj8qC/
但是,我同意@ascii-lime 的评论;我希望客户有更多的机会理解setTimeout
它,因为它是 JavaScript 的基础部分,不像,它使许多delay()
用户感到困惑(来自 StackOverflow 上提出的问题的经验)。
FWIW,这个问题促使我写了一篇关于使用的博客文章delay()
;它比这个答案更详细,对其他人来说可能是很好的进一步阅读。
delay()
是一个不能与任何东西一起使用的棘手函数:它主要用于效果(它立即返回,它不会阻塞 javascript 执行流程)。
从文档:
它可以与标准效果队列或自定义队列一起使用
(因此,如果您不使用 fx 队列,则必须使用自定义队列)
在这种情况下使用 setTimeout。
是的。从延迟中恢复是立竿见影的。您的代码中没有任何内容表明应该等待。您需要使用 setTimeout 让引擎等待..