Using delay with HTML or text setting doesn't work

后端 未结 2 1729
忘了有多久
忘了有多久 2020-12-03 14:42

I have strange problem with the delay function here using the HTML function with it.

I set an HTML text by using $( \'#element\').html( \'Hello World\');

相关标签:
2条回答
  • 2020-12-03 15:10

    delay() defaults to the animation queue, for effects like fadeOut(), etc. You should use setTimeout() instead:

    window.setTimeout(function () {
        $("#element").html(' ');
    }, 3000);
    

    From http://api.jquery.com/delay/:

    jQuery.delay() is best for delaying between queued jQuery effects and such, and is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases.

    0 讨论(0)
  • 2020-12-03 15:26

    .html() isn't a queued function. If you want it to happen in order in the animation queue, you'll have to .queue() it yourself, like this:

    $('#element').delay(3000).queue(function(n) { 
      $(this).html('&nbsp'); n();
    });
    

    If you're not chaining animations or anything like this, use setTimeout() or setInterval() (whichever is appropriate to the situation) directly, .delay() is just a wrapper for setTimeout() and there's no reason to use extra code/complexity when there's no need.

    0 讨论(0)
提交回复
热议问题