我无法让jQuery的延迟功能与append
函数一起使用。哪里不对?有没有办法让它工作?我想避免直接使用setTimeout
,以便让客户更容易遵循,而且客户将自己维护,无需任何经验。jQuery延迟使用append()
我的代码: 'TESTTEST' 印在同一时间
$('#chatwindow').append('test').delay(2000).append('test');
在这段代码中,我得到的,delay
被忽略。
我无法让jQuery的延迟功能与append
函数一起使用。哪里不对?有没有办法让它工作?我想避免直接使用setTimeout
,以便让客户更容易遵循,而且客户将自己维护,无需任何经验。jQuery延迟使用append()
我的代码: 'TESTTEST' 印在同一时间
$('#chatwindow').append('test').delay(2000).append('test');
在这段代码中,我得到的,delay
被忽略。
这是因为delay(2000)
队列fx
队列默认情况下,其中append()
从来没有的一部分。
取而代之,您可以使用queue()
函数在其上专门排队append()
。
$('#chatwindow').append('test').delay(2000).queue(function (next) {
$(this).append('test');
next();
});
你可以在这里看到一个这方面的例子; http://jsfiddle.net/mj8qC/
但是,我同意@ ascii-lime的评论;我期望客户将有更多的机会了解setTimeout
,因为它是JavaScript的基础部分,而不像delay()
,它会迷惑许多用户(来自有关StackOverflow问题的经验)。
FWIW,这个问题引发我写a blog post的使用delay()
;它比这个答案更详细,并且可能是对其他人更好的进一步阅读。
delay()
是一个棘手的函数,它不能与任何东西一起使用:它主要是为了效果(立即返回,它不会阻止JavaScript执行流)。
从the doc:
它可以使用标准的动画队列或定制队列使用
(所以你必须使用自定义的队列中,如果你不使用FX队列)
在这种情况下使用setTimeout。
是的。延迟的回报是即时的。您的代码中没有任何内容表明reurn应该等待。你需要使用setTimeout引擎来等待。
你试图追加两次测试吗? –
是的,测试是一个字符串,它应该被添加两次,你可以用任何你想要的文本替换它。 –
你可以在第一个地方搜索:) - http://stackoverflow.com/questions/4544126/jquery-delay-not-working – Rifat