2012-05-15 27 views
10

Để có một datepicker làm việc trên một lĩnh vực, tôi có phải đặt script này bên trong phần tử của tôi

$(function() { 
    $("#date_datepicker").datepicker({ dateFormat: "yy-mm-dd" }); 
}); 

Loại bỏ các $(function() { làm datepicker không hoạt động.

Vậy điều đó có nghĩa là $(function() { giống với $(document).ready?

Tôi đang cố gắng tối ưu hóa mã javascript của mình để biết điều này có thể hữu ích.

+0

thể trùng lặp của [jQuery tài liệu chức năng sẵn sàng] (http: // stackoverflow .com/question/5754192/jquery-document-ready-function) – jtheletter

Trả lời

19

Xem trích dưới đây từ http://api.jquery.com/ready/

Cả ba cú pháp sau là tương đương:

  • $(document).ready(handler)
  • $().ready(handler) (này không được khuyến khích)
  • $(handler)
+2

Cảm ơn, tôi đã tìm kiếm trên google nhưng tôi nghĩ rằng có một số ký tự đặc biệt như $ khiến bạn khó có được kết quả đúng. – MegaNairda

4

Vâng, đó là phiên bản viết tắt của cùng một thứ. Hàm $ gọi hàm $(document).ready khi chuyển một hàm làm đối số.

Nếu bạn đang cố gắng tối ưu hóa về tốc độ - cả hai sẽ thực hiện tương đương nhiều, tuy nhiên, $(document).ready(handler) sẽ nhanh hơn nếu thực hiện nhiều lần.

Nếu bạn đang cố gắng tối ưu hóa về kích thước tệp - hãy sử dụng bộ chỉnh sửa.

IMO tốt nhất bạn có thể làm là 'tối ưu hóa' về khả năng đọc và đơn giản. Điều này làm cho mã dễ dàng hơn để hiểu và duy trì. Có những công cụ hiện có để có một phiên bản chưa được tối ưu hóa và nén và tối ưu hóa cho bạn (hãy kiểm tra trình biên dịch đóng cửa của Google).

+0

Mã của tôi chứa cả hai thứ tôi đã đề cập ở đầu trang của mình. Đó là một điều tốt mặc dù rằng tôi đã không gặp rắc rối khi có cả hai người trong số họ ở đầu trang của tôi. Tôi sẽ cố gắng sử dụng trình chỉnh sửa giống như bạn đã nói sau khi tôi hoàn thành việc tối ưu hóa mã của mình, giảm các mã dự phòng như vậy và các cuộc gọi tương tự khác có thể được kết hợp thành một hàm gọi – MegaNairda

+0

Tôi hy vọng tôi không chạy vào khả năng tương thích rắc rối khi sử dụng _shorthand_ như những gì xảy ra với Internet Explorer khi sử dụng ký hiệu ajax '$ .post' – MegaNairda

1

Có, $(function() {$(document).ready giống nhau.

$(function() { hoạt động như một cú pháp viết tắt nhưng $(document).ready làm cho mã dễ đọc hơn.

+1

Cảm ơn, tôi cũng thích' $ (tài liệu) .ready' hơn là '$ (function() {'. – MegaNairda

3

Các .ready() phương pháp thường được sử dụng với một chức năng ẩn danh:

$(document).ready(function() { 
    // Handler for .ready() called. 
}); 

Đó là tương đương với cách gọi:

$(function() { 
// Handler for .ready() called. 
}); 

As can be read here

-1

Bạn đang sử dụng jQuerymobile?nếu có thì thay vì sử dụng tài liệu sử dụng sẵn sàng

$('#pageId').live('pageinit',function(){}); 
+0

Không thực sự , chỉ là jQuery bình thường. – MegaNairda

1

đây là một cách khá an toàn để chạy mã trên đã sẵn sàng

jQuery(function($, undefined){ 
    // code to run onready 
}); 

Mặc dù cá nhân tôi thích làm việc đó như thế này:

(function($){ // create scope and pass specific aliased variables 

    $(function($, undefined){ // attach callback to run onready 
     // code to run onready 
    }); 

})(jQuery); 

Bằng cách này bạn có thể làm cho nhóm của riêng bạn các chức năng mà không sợ vi phạm ma của những người khác hoặc có code của bạn bị phá vỡ bởi các định nghĩa biến lỏng lẻo. Bạn cũng có thể gọi các biến mà bạn chuyển cùng với bất kỳ tên nào bạn muốn và có mã chạy không sẵn sàng, ví dụ.

(function($){ // create scope and pass specific aliased variables 


    $(document).on('click', 'a[href]', function(){ 
     // code to run when a link is clicked 
    }); 
    $(window).on('load',function(){ 
     // code to run onload 
    }); 
    $(function($, undefined){ // attach callback to run onready 
     // code to run onready 
    }); 


})(jQuery); 

Lưu ý rằng đây là những giống

$(document).bind('ready', function(){}); 
$(document).on('ready', function(){}); 
$(document).ready(function(){}); 
$(function(){}); 

Và tài liệu mà không có một sự kiện tải

$(document).on('load', function(){}); // will not work 
Các vấn đề liên quan