2009-07-21 26 views
8

Tôi đã thấy bốn cách khác nhau để yêu cầu jQuery thực hiện một hàm khi tài liệu sẵn sàng. Tất cả đều tương đương?Bốn biến thể của jQuery sẵn sàng() - sự khác biệt là gì?

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

$().ready(function() { 
    alert('$().ready()'); 
}); 

$(function() { 
    alert('$()'); 
});  

jQuery(function ($) { 
    alert('jQuery()'); 
}); 
+2

btw, tôi nghĩ rằng '$ (cửa sổ) .ready (...) 'cũng hoạt động. – geowa4

Trả lời

11

Không có sự khác biệt.

$ giống với jQuery. Nếu bạn xem nguồn chưa được xác định, bạn sẽ thấy var $ = jQuery = ... hoặc một cái gì đó có hiệu lực.

Các jQuery chức năng kiểm tra kiểu của nó là tham số, nếu nó là một chức năng, nó đối xử với nó giống như $(document).ready(...)

Calling jQuery mà không có một thông số mặc định để sử dụng document. Vì vậy, $()$(document) giống hệt nhau. Hãy thử nó trong Firebug.

+2

Điều này không giải thích cái thứ hai – Draemon

+0

crap, tôi nghĩ rằng tôi đã có tất cả. Giữ lấy. – geowa4

+0

được chỉnh sửa để bao gồm phần thứ hai. – geowa4

4

lại: Nhận xét của Geroge IV về $() == $ (tài liệu) chính xác. Từ nguồn unminified (init là những gì được gọi trong nội bộ):

init: function(selector, context) { 
    // Make sure that a selection was provided 
    selector = selector || document; 

Cũng từ nguồn, để sao lưu trò chuyện theo thời gian:

// HANDLE: $(function) 
    // Shortcut for document ready 
    } else if (jQuery.isFunction(selector)) 
     return jQuery(document).ready(selector); 

này cần được wiki cộng đồng. Tôi luôn quan tâm đến các hoạt động bên trong của jquery, bây giờ tôi đã có một cái cớ để bắt đầu tìm kiếm :-)

+0

săn tốt @Davd! – geowa4

+0

btw, "đây nên là cộng đồng wiki" <- vậy tại sao không phải là nó? – geowa4

+0

Ah không biết làm thế nào để làm điều đó hoặc nếu tôi có thể, nhưng tôi đã mở một liên kết với điều này :-D –

0

Dưới đây là một số khác - bắt đầu như thế này ...

(function (jQuery) { 

sau đó để kết thúc ...

})(jQuery); 

Một ví dụ là ở đây: http://jsfiddle.net/C2qZw/23/

0

Ngoài ra nó nên được đề cập, biểu tượng mà bạn chuyển đến hàm sẽ được sử dụng bên trong hàm. Ví dụ:

$(function(jQuery) { 
    // now I can use jQuery instead $ 
    jQuery("body").append("<div></div>"); // adds div to the end of body element 
}); 

nếu bạn muốn sử dụng $ - bạn có thể rời khỏi param chức năng trong tình trạng này trống

Các ví dụ thực tế bạn có thể tìm thấy ở đây http://jsfiddle.net/yura_syedin/BNgd4/

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