2011-07-07 72 views
9

Tôi chỉ thấy điều này và nghĩ rằng nó thật tuyệt.Phương thức .delay của jQuery hoạt động như thế nào?

console.log("Starting..."); 
$("#my_element") 
    .fadeIn() 
    .delay(3000) 
    .fadeOut(); 
console.log("Finishing..."); 

Phương thức .delay hoạt động như thế nào? Tôi có nghĩa là, làm thế nào nó tìm ra cách đợi 3 giây nhưng không làm gián đoạn dòng điều khiển chính?

+1

http://james.padolsey.com/jquery/#v=1.6 .2 & fn = trì hoãn – Neal

Trả lời

6

jQuery có một "hàng đợi" đối tượng bên trong, đó chỉ là một mảng:

[ nextAction, 
    action, 
    action, 
    lastAction ] 

Khi bạn sử dụng delay, nó đẩy:

function delay(ms){ 
    setTimeout(dequeue, ms) 
} 

Ý nghĩa rằng một khi nó được cho sự chậm trễ, có một thời gian chờ và sau đó hành động tiếp theo được kích hoạt. Tuy nhiên, các hành động xảy ra ngay lập tức, chẳng hạn như .css, làm:

không chậm trễ.

Các vấn đề liên quan