jQuery delay to work with append()

javascript, jquery

Solution

This is because `delay(2000)` queues the `fx` queue by default, which `append()` is never part of.

Instead, you can specifically queue `append()` on it using the `queue()` function.

$('#chatwindow').append('test').delay(2000).queue(function (next) {
    $(this).append('test');
    next();
});

You can see an example of this working here; http://jsfiddle.net/mj8qC/

However, I agree with @ascii-lime's comment; I expect the customer will have more chance understanding `setTimeout` as it's a fundamental part of JavaScript, unlike `delay()`, which confuses many users (from experience on questions asked on StackOverflow).

FWIW, this question triggered me to write a blog post on the uses of `delay()`; it goes into more detail than this answer, and might be great further reading for others.

Problem

I can't make the delay function of jQuery works with `append` function. What is wrong? Is there a way to make it work? I want to avoid using `setTimeout` directly to make it more easy to follow for the customer, who will maintain it himself, without any experience. My code: ``` $('#chatwindow').append('test').delay(2000).append('test'); ``` In this code, I get 'testtest' printed at the same time, `delay` is ignored.

Original source

Related problems