Chắc chắn có trường hợp sử dụng cho ví dụ đầu tiên. Nếu bạn có các thư viện/tập lệnh JS khác được tải trên cùng một trang, không đảm bảo rằng chúng không ghi đè biến số $
. (Điều này rất phổ biến khi bạn có Prototype và jQuery trên cùng một trang).
Vì vậy, nếu Prototype đang sử dụng $
, bạn sẽ cần phải sử dụng jQuery
bất cứ khi nào bạn muốn làm việc với jQuery. Điều này có thể nhận được khá xấu xí:
jQuery(function(){
jQuery('a', '#content').bind('click', function(){
if(jQuery(this).attr('href') == 'www.google.com')
{
alert("This link goes to Google");
jQuery(this).addClass('clicked'));
}
});
})
Hãy nhớ rằng, chúng ta không thể sử dụng $
bởi vì đó là một phương pháp từ thử nghiệm trong phạm vi toàn cầu.
Nhưng nếu bạn quấn nó bên trong này ..
(function($){
$(function(){
// your code here
});
})(jQuery);
Các $
sẽ thực sự tham khảo các thư viện jQuery trong khi vẫn đề cập đến Nguyên mẫu ở bên ngoài!Điều này có thể giúp dọn dẹp mã của bạn:
(function($){
$(function{}(
jQuery('a', '#content').bind('click', function(){
if(jQuery(this).attr('href') == 'www.google.com')
{
alert("This link goes to Google");
jQuery(this).addClass('clicked'));
}
});
));
})(jQuery);
Đây là một mô hình phổ biến với phần mở rộng jQuery để đảm bảo rằng họ luôn được bổ sung vào đối tượng jQuery, nhưng có thể được viết bằng $
để giữ mã gọn gàng.
Nguồn
2012-03-08 02:56:07
FYI - chúng không tương đương. – Hamish