jQuery延迟使用append()

Jef*_* B. 6 javascript jquery

我不能使jQuery的延迟功能与append函数一起工作.怎么了?有没有办法让它发挥作用?我想避免setTimeout直接使用,让客户更容易理解,他们将自己维护,没有任何经验.

我的代码:

$('#chatwindow').append('test').delay(2000).append('test');
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我同时打印'testtest',delay被忽略了.

Mat*_*att 23

这是因为默认情况下delay(2000)fx队列进行排队,这append()绝不是其中的一部分.

相反,您可以append()使用该queue()功能专门对其进行排队.

$('#chatwindow').append('test').delay(2000).queue(function (next) {
    $(this).append('test');
    next();
});
Run Code Online (Sandbox Code Playgroud)

你可以看到这个工作的一个例子; http://jsfiddle.net/mj8qC/

但是,我同意@ ascii-lime的评论; 我希望客户有更多的机会理解,setTimeout因为它是JavaScript的基本部分,不像delay(),这会让很多用户感到困惑(根据StackOverflow上提出的问题的经验).

FWIW,这个问题引发了我写一篇关于其用途的博客文章delay() ; 它比这个答案更详细,可能会为其他人进一步阅读.

  • 虽然这里有几个答案,但展示如何使用jquery中的`queues'是如此巨大的信息.绝对是最好的答案. (3认同)
  • +1 append默认情况下不排队,立即执行,因为它不用于动画.这会将其添加到队列中.对于OP的客户来说,这是否比`setTimeout`更容易理解是有争议的,但这个答案绝对是最有用的. (2认同)