2010-07-20 26 views
6
(function ($) { 
     ... 
    }) (jQuery); 
+1

http://stackoverflow.com/questions/2024888/a-simple-question-on-jquery-closure – gnarf

Trả lời

6

Để tránh xung đột với các thư viện javascript khác cũng sử dụng $.

Phương pháp này, tuy nhiên, cho phép bạn sử dụng $ trong chức năng đó theo ý muốn của bạn, không cần sử dụng jQuery tại đó.

Mẫu đó cũng quan trọng khi viết plugin jquery.

+0

Cảm ơn bạn rất nhiều! Tất cả các câu trả lời và bình luận khai sáng cho tôi! – kaneda

+0

@laramaki: Bạn được chào đón :) – Sarfraz

2

là gì Nó tạo ra một chức năng, với $ như một cuộc tranh cãi, và ngay lập tức chạy mà chức năng với jQuery làm đối số. Điều này có hiệu quả sẽ đảm bảo rằng $ trỏ đến jQuery bên trong mã của bạn, ngay cả khi sử dụng jQuery.noConflict().

1

Bằng cách này, bạn có thể sử dụng $ bên trong phạm vi chức năng của mình, nhưng ở bên ngoài, jQuery không clobbering sử dụng các thư viện khác của $ (ví dụ như Prototype cũng sử dụng $, và một số người thích để trộn hai với nhau)

0

Ngoài lý do được nêu chi tiết trong các câu trả lời khác, nó nhanh hơn một chút để truy cập các đối số hàm so với các biến toàn cầu.

Miễn là jQuery.noConflict() chưa được gọi, điều này có thể được viết là function($){ … }($) có cùng tác dụng.

0

Còn được gọi là chức năng gọi lại ẩn danh, vì nó không được gắn với bất kỳ đối tượng nào, vì vậy hoàn toàn là 'chức năng'. Một mẫu thiết kế tốt khi thiết kế các plugin với jQuery để tránh xung đột như những người khác đã chỉ ra!

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