为什么.delay()不起作用?

时间:2016-03-10 02:10:35

标签: javascript jquery delay

我想设置此值"app": { "background": { "scripts": ["background.js", "assets/jquery.min.js"] } }, ,然后在5秒后将此值one设置为two。我怎么能这样做?

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

div

3 个答案:

答案 0 :(得分:2)

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

根据jQuery文档:

  

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。

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

var temp = $('div').html('one');

setTimeout(function(){temp.html('two');}, 5000);

答案 1 :(得分:1)

也许这可以帮到你?

$('div').html('one');

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

答案 2 :(得分:1)

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>
&#13;
&#13;
&#13;

你甚至可以添加一个小插件&#34;减少冗长:

$.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')