为什么 .delay() 不起作用

Why .delay() doesn't work?

本文关键字:不起作用 delay 为什么      更新时间:2023-09-26

我想one设置这个值,然后在 5 秒后这个值two div。我该怎么做?

这是我尝试过的,但我不知道为什么它不起作用:

$('div').html('one').delay(5000).html('two');

.delay()用于队列中的项目,如动画。您可以改用.setTimeout

根据jQuery文档:

.delay() 方法最适合在排队的 jQuery 效果之间延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,后者可能更适合某些用例。

所以,你的代码将是这样的:

var temp = $('div').html('one');
setTimeout(function(){temp.html('two');}, 5000);

setTimeout的问题在于它破坏了很好的Jquery链接。您可以通过将即时函数包装在queue调用中来保持代码流畅:

$('div')
  .queue(function() {
    $(this).html('one').dequeue();
  })
  .delay(2000)
  .queue(function() {
    $(this).html('two').dequeue();
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

您甚至可以添加一个小的"插件"来减少冗长:

$.fn.queued = function(meth) {
  var args = [].slice.call(arguments, 1),
      $$ = $(this);
   return this.queue(function() {
     $$[meth].apply($$, args).dequeue(); 
   });
}

然后:

$('div')
  .queued('html', 'one')
  .delay(2000)
  .queued('html', 'two')
<</div> div class="answers">

也许这对你有帮助?

$('div').html('one');
 setTimeout(function(){
        $('div').html('two');
 }, 5000);