$ (Hàm () {}) làm gì; làm gì


207

Đôi khi tôi tạo một hàm và gọi hàm sau.

Thí dụ:

function example { alert('example'); }
example(); // <-- Then call it later

Bằng cách nào đó, một số chức năng không thể được gọi. Tôi phải gọi các chức năng đó bên trong:

$(function() { });

Ý nghĩa $(function() {});(function() { });ý nghĩa của những điều này là gì?

Câu trả lời:


306
$(function() { ... });

chỉ là jQuery tay ngắn cho

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

Những gì nó được thiết kế để làm (trong số những thứ khác) đảm bảo rằng chức năng của bạn được gọi một khi tất cả các thành phần DOM của trang đã sẵn sàng để được sử dụng.

Tuy nhiên, tôi không nghĩ đó là vấn đề bạn gặp phải - bạn có thể nói rõ ý của bạn bằng cách nào đó bằng cách nào đó, một số chức năng không thể được gọi và tôi phải gọi các chức năng đó bên trong '? Có thể gửi một số mã để hiển thị những gì không hoạt động như mong đợi?

Chỉnh sửa: Đọc lại câu hỏi của bạn, có thể là chức năng của bạn đang chạy trước khi trang được tải xong, và do đó sẽ không thực hiện đúng; đặt nó trong $ (hàm) thực sự sẽ khắc phục điều đó!


2
nếu $ (hàm () {}); đã có trong $ (tài liệu). yet ()?
jwchang

hàm không hoạt động mà không có $ (function () mặc dù nó đã có sẵn trong $ (document) ready ().
jwchang

Câu hỏi hay! Tôi tin rằng nó chỉ nên hoạt động, vì jQuery biết bạn đang ở đúng nơi, nhưng nó chắc chắn không liên quan; nếu bạn ở trong. yet () bạn chỉ có thể gọi hàm của mình như bình thường. Nếu nó không hoạt động, sau đó đăng một mẫu, hoặc thậm chí tốt hơn - hãy thử và tạo một câu đố như jsfiddle.net.
Russ Clarke

4
@JeongWooChang Làm như vậy (function () { ... })();. Bạn phải thêm ()để gọi chức năng của bạn.
Vidime Vidas

3
"Các nhà phát triển có kinh nghiệm đôi khi sử dụng tốc ký $()cho $( document ).ready(). Nếu bạn đang viết mã mà những người không có kinh nghiệm với jQuery có thể thấy, tốt nhất nên sử dụng dạng dài." - learn.jquery.com
thdoan

15

Sau đây là một lệnh gọi hàm jQuery:

$(...);

Đó là "hàm jQuery." $là một chức năng, và $(...)bạn đang gọi chức năng đó.

Tham số đầu tiên bạn cung cấp là như sau:

function() {}

Tham số này là một hàm mà bạn đã chỉ định và $hàm sẽ gọi phương thức được cung cấp khi DOM tải xong.



5

Tôi nghĩ bạn có thể nhầm lẫn Javascript với các phương thức jQuery. Vanilla hoặc Javascript đơn giản là một cái gì đó như:

function example() {
}

Một chức năng của bản chất đó có thể được gọi bất cứ lúc nào, bất cứ nơi nào.

jQuery (một thư viện được xây dựng trên Javascript) đã được xây dựng trong các hàm thường yêu cầu DOM phải được hiển thị đầy đủ trước khi được gọi. Cú pháp khi hoàn thành việc này là:

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

Vì vậy, một hàm jQuery, có tiền tố với $hoặc từ jQuerythường được gọi từ bên trong phương thức đó.

$(document).ready(function() {        
    // Assign all list items on the page to be the  color red.  
    //      This does not work until AFTER the entire DOM is "ready", hence the $(document).ready()
    $('li').css('color', 'red');   
});

Mã giả cho khối đó là:

Khi mô hình đối tượng tài liệu $(document)đã sẵn sàng .ready(), hãy gọi hàm sau function() { }. Trong hàm đó, hãy kiểm tra tất cả <li>các trang trên trang $('li')và sử dụng phương thức jQuery .CSS () để đặt thuộc tính CSS "màu" thành giá trị "đỏ".css('color', 'red');


2

Đây là lối tắt cho $(document).ready(), được thực thi khi trình duyệt tải xong trang (nghĩa là ở đây, "khi DOM có sẵn"). Xem http://www.learningjquery.com/2006/09/int sinhing-document-yet . Nếu bạn đang cố gắng gọi example()trước khi trình duyệt tải xong trang, nó có thể không hoạt động.


1
"tải xong trang" là không chính xác và sai lệch.
Yahel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.