2011-12-04 41 views
9

thể trùng lặp:
javascript domready?Trong JQuery, làm cách nào để kiểm tra xem DOM đã sẵn sàng chưa?

Tôi muốn kiểm tra xem $(function(){ }); là "sẵn sàng".

Trả về true nếu DOM đã sẵn sàng, sai cách khác

+1

bạn có thể vui lòng giải thích thêm ... – Yacov

+0

rephrase, xin vui lòng? Tôi không hoàn toàn hiểu những gì bạn muốn. DOM đã sẵn sàng ngay trước khi gọi lại (trong ví dụ của bạn, hàm 'function() {}') chạy. – cHao

+0

Mọi người (kể cả tài liệu API jQuery) gọi đó là "tài liệu sẵn sàng hoạt động". ;-) –

Trả lời

21

Từ mã jQuery

 
if (jQuery.isReady) { 
    fn.call(document, jQuery); 
} 

+0

Chính xác những gì tôi đang tìm kiếm !! – TIMEX

+2

Chỉ cần thực hiện một bình luận ở đây rằng đây không phải là một tài sản tài liệu và các tác giả của jQuery có thể thay đổi/xóa thuộc tính này bất cứ lúc nào mà không cần thông báo trước. Sử dụng rủi ro của riêng bạn và cẩn thận khi cập nhật jQuery. –

2

Chức năng đó sẽ chỉ thực thi khi dom đã sẵn sàng. Đó là điểm đóng gói mã của bạn trong hàm đó;). Có nói rằng, một số thứ (như hình ảnh, kịch bản trì hoãn, v.v.) có thể chưa được tải hoặc hoàn trả đầy đủ, vì vậy hãy lưu ý.

1

Bạn có thể sử dụng jQuery.isReady, nhưng nó không có cơ sở và cần phải tránh.

Nếu bạn chỉ cần chạy một cái gì đó sau khi DOM đã sẵn sàng, bạn chỉ có thể gọi

$(document).ready(function() { 
    ... 
}); 

như bình thường - mà sẽ chạy mã ngay nếu DOM đã sẵn sàng và chờ đợi cho đến khi nó là nếu không muốn nói.

13

Bạn có thể sử dụng các cuộc gọi rõ ràng

$(document).ready(function(){ 
    // do this after dom is ready 
}); 

Hoặc sử dụng các phím tắt

$(function(){ 
    // do this after dom is ready 
}); 

Nó cũng hữu ích để quấn jQuery của bạn trong một chức năng ẩn danh khi bạn đang sử dụng các thư viện khác; Cũng rất phổ biến để sử dụng điều này khi viết các plugin jQuery.

(function($, window){ 
    // use $ here freely if you think any other library might have overridden it outside. 
    $(function(){ 
    // do this after dom is ready 
    }); 
})(jQuery, window); 

Cuối cùng, bạn có thể sử dụng jQuery.isReady (bool)

if (jQuery.isReady) { 
    // do something 
} 
+0

Bạn cũng có thể làm 'jQuery (function ($) {/ * jQuery là aliased đến $ bên trong khối này ngay cả khi thư viện khác thường được gán cho $ * /});' – redbmk

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