jQuery延迟使用append()
我不能使jQuery的延迟function与append
函数一起使用。 怎么了? 有没有办法让它发挥作用? 我想避免直接使用setTimeout
让客户更容易理解,他们将自己维护,没有任何经验。
我的代码:
$('#chatwindow').append('test').delay(2000).append('test');
在这段代码中,我同时打印’testtest’,忽略delay
。
这是因为delay(2000)
默认对fx
队列进行排队,而append()
从不是其中的一部分。
相反,您可以使用queue()
函数专门对其上的append()
进行queue()
。
$('#chatwindow').append('test').delay(2000).queue(function (next) { $(this).append('test'); next(); });
你可以看到这个工作的一个例子; http://jsfiddle.net/mj8qC/
但是,我同意@ ascii-lime的评论; 我希望客户有更多机会了解setTimeout
因为它是JavaScript的基本组成部分,而不像delay()
,这会让许多用户感到困惑(根据StackOverflow上提出的问题的经验)。
FWIW,这个问题引发了我写一篇关于delay()
的使用的博客文章 ; 它比这个答案更详细,可能会为其他人进一步阅读。
delay()
是一个棘手的函数,不能与任何东西一起使用:它主要用于效果(它立即返回,它不会阻止javascript执行流程)。
从文档 :
它可以与标准效果队列一起使用,也可以与自定义队列一起使用
(因此,如果您不使用fx队列,则必须使用自定义队列)
在这种情况下使用setTimeout。
是。 延迟返回是立即的。 代码中没有任何内容表明reurn应该等待。 你需要使用setTimeout让引擎等待..