我刚看到这个并认为它很酷。
console.log("Starting...");
$("#my_element")
.fadeIn()
.delay(3000)
.fadeOut();
console.log("Finishing...");
.delay方法如何在引擎盖下工作?我的意思是,它如何弄清楚如何等待3秒而不是中断主控制流程?
答案 0 :(得分:6)
jQuery有一个内部“队列”对象,它只是一个数组:
[ nextAction,
action,
action,
lastAction ]
当您使用delay
时,它会推送:
function delay( ms ){
setTimeout( dequeue, ms )
}
意味着一旦达到延迟,就会超时,然后触发下一个动作。立即发生的操作,例如.css
,请执行:
function css(){
// do stuff
dequeue();
}
没有延迟。
答案 1 :(得分:0)
基本上使用超时和你投入延迟功能的时间。
请在此处查看源代码:http://james.padolsey.com/jquery/#v=1.6.2&fn=delay
队列和出队的代码也很有用:
http://james.padolsey.com/jquery/#v=1.6.2&fn=queue
http://james.padolsey.com/jquery/#v=1.6.2&fn=jQuery.dequeue