jQuery delay to work with append()

前端 未结 3 2229
忘了有多久
忘了有多久 2021-02-15 11:59

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

3条回答
  •  说谎
    说谎 (楼主)
    2021-02-15 13:00

    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.

提交回复
热议问题