2011-07-21 37 views
8

Nếu tôi có nhiều hàm $(document).ready(...), chúng có ghi đè lên nhau không? Vì lợi ích của lập luận, giả vờ mã hóa thích hợp được ném ra khỏi cánh cửa trên cái này.

Giả sử tôi có một $(document).ready(function() {...}); trong tệp tập lệnh của trang web của tôi. Sau đó, tôi sử dụng plugin của bên thứ ba cũng sử dụng $(document).ready(function() {...});. Điều này sẽ ghi đè lên chức năng của tôi đã được tạo ra hay jQuery "xếp hàng" các chức năng này để tất cả chạy khi tài liệu đã sẵn sàng?

+1

Không, hãy ghi nhớ điều này nếu bạn đang sử dụng nó rất nhiều: http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/ – Paulpro

+0

@PaulPRO - Liên kết tuyệt vời. Tôi chưa bao giờ nghĩ về điều đó. – Spidy

+0

@Spidy: bạn có nhìn vào các câu hỏi được đề xuất khi tạo câu hỏi này không? Có một tấn những câu hỏi này rồi. Đó là bản sao trực tiếp của khoảng 5 câu hỏi khác. –

Trả lời

16

Không, chúng không ghi đè lên nhau. Mỗi chức năng được thực hiện.

Bạn dĩ nhiên có thể kiểm tra điều này một cách dễ dàng tự hỏi: http://jsfiddle.net/6jgGt/

Hoặc hiểu từ jQuery code bản thân:

Đường dây 255 là chức năng sẵn sàng nơi jQuery.bindReady(); được gọi mà trong số những thứ khác initialises đối tượng readyList trên đường dây 429 với readyList = jQuery._Deferred();

Và một khi đó là đối tượng trì hoãn, hàm được truyền vào là được nối thêm với readyList.done(fn); và chúng tôi ca n xem in the done method trên dòng 41 rằng phần tử được thêm vào một mảng với callbacks.push(elem); để mỗi phần tử được lưu riêng biệt ...

4

Không, chúng không ghi đè lên nhau. Chúng được xếp hàng đợi, như bạn đã nói.

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