sự khác biệt giữa
$(function(){
});
và
$(document).ready(function() {
});
sự khác biệt giữa
$(function(){
});
và
$(document).ready(function() {
});
Câu trả lời:
Hàm này hoạt động giống như $ (document) .ready (), ở chỗ nó sẽ được sử dụng để bọc các $ () khác
Bạn có thể thấy điều này trong mã nguồn :
rootjQuery = jQuery(document);
...
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
$(function() {})
cú pháp được khuyến nghị; các cú pháp khác vẫn hoạt động nhưng không được dùng nữa. Xem api.jquery.com/ready
(document).ready
trước hàm và với, async đã tải đúng biến hàm. Nếu không, chỉ tải các giá trị ban đầu của biến mà không bao giờ cung cấp các giá trị không đồng bộ mới. Nó dường như ảnh hưởng đến thời gian, ít nhất là vàoopera
} else if (jQuery.isFunction(selector)) {
return rootjQuery.ready(selector);
}
Từ nguồn
Gọi $(document).ready(selector)
tiết kiệm một vài câu lệnh if.
Mặc dù jQuery làm bộ nhớ cache $(document)
bên trong có thể làm cho $(f)
nhanh hơn.
$(d).ready(f)
vs$(f)
var d = document;
ở trên cùng hoặc đặt nó bên trong (function(d) {
và })(document);
. : P
d = document, w = window
Cả hai đều tương đương, đầu tiên là dạng tốc ký.
$ (function () {}) là một đoạn ngắn cho dom sẵn sàng
Một hàm được truyền làm đối số cho hàm tạo jQuery được liên kết với sự kiện sẵn sàng tài liệu.
Tôi đề nghị bạn đọc cái này . Bạn có thể thấy
Cả ba cú pháp sau là tương đương:
$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)
Vì vậy, nó tùy thuộc vào bạn và những gì bạn thích.
$().ready()
sẽ không hoạt động trong jQuery 1.4+. $()
trả về một lựa chọn trống thay vì tài liệu trong những trường hợp này.
Cả hai hoàn toàn tương đương: sử dụng bất kỳ hình thức nào bạn thích.
Điều đó nói rằng, cá nhân tôi luôn sử dụng biểu mẫu mở rộng $(document).ready(function(){});
vì lý do đơn giản là hoàn toàn rõ ràng mã đang làm gì. Ý tưởng gần đúng là của "mã tự lập tài liệu". Bất cứ ai đến đoạn code sau này sẽ thấy ngay rằng mã sẽ được chạy trên document
của ready
sự kiện. Với dạng viết tắt, bạn phải dựa vào người đọc mã của bạn để hiểu ý nghĩa.
Chúng tôi đã gặp phải tình huống IE9 không chạy các hàm trong $ (function () {}); theo cách thức hoặc thời gian giống như $ (document) .ready (function () {});
Vấn đề đặt ra cho chúng tôi đặc biệt là đọc thông tin từ chuỗi truy vấn và xử lý và hiển thị thông tin đó trên màn hình hoặc sử dụng nó để xử lý biểu mẫu. IE9 sẽ xử lý thông tin sau khi nó được lưu vào bộ nhớ đệm với $ (function () và người dùng đã làm mới trang. Nhưng trong lần chạy đầu tiên, không có gì hoạt động đúng. Tuy nhiên, khi chúng tôi chuyển từ $ (function () {}); sang $ ( document) .ready (), sự cố đã được khắc phục. Chúng tôi đã thay đổi KHÔNG GÌ khác.
Tôi rất mong chờ ngày tôi không phải kiểm tra IE9 trở xuống.
opera
. Tôi đã ủng hộ câu trả lời của bạn vì tôi đã gặp vấn đề chính xác. (sử dụng jquery 3.5)
Chúng thực sự giống nhau. Không khác nhau.
Đây là cách bản địa.
$(document).ready(function() {
// code
});
Và đây là cách viết tắt của từ trước.
$(function() {
// code
});
TypeError: 'undefined' is not a function
đôi khi có thể dẫn đến lỗi.
$(document)
, vì vậy có thể bạn muốn nói đến $
cách viết tắt của jQuery
.
Tôi sử dụng $(function() {});
vì nó ngắn hơn. Theo như tôi biết thì không có sự khác biệt giữa hai cách làm.