2011-06-24 39 views
5

Tôi thấy hai mẫu sau khá thường xuyên. Sự khác biệt giữa hai là gì? Khi nào thì thích hợp?

$.pluginName = function(){} 

$.fn.pluginName = function(){} 
+0

hỏi rất nhiều lần ..... có thể trùng lặp của [jQuery Plugin Authoring: Tại sao một số làm jQuery.pluginName và những người khác jQuery.fn.pluginName?] (http://stackoverflow.com/questions/538043/jquery-plugin-authoring-why-do-some-do-jquery-pluginname-and-others-jquery-fn-pl) – redsquare

+0

@ hình vuông màu đỏ. Cảm ơn các liên kết. Tôi nhìn, nhưng tôi không thể tìm thấy bất kỳ câu hỏi tương tự. –

+0

Điều này về cơ bản yêu cầu sự khác biệt giữa '$' và '$ .fn'. –

Trả lời

9

Rất đơn giản:

$.fn.pluginName là một chức năng callable trên tất cả các jQuery.init * đối tượng. Đây là hữu ích cho việc chức năng chuỗi có thể sử dụng với các đối tượng:

Ví dụ:

$.fn.foo = function(){...}; 

$('#bar').foo(); 

Tiếp tục chaining các đối tượng, bạn cần phải trả lại một đối tượng jQuery.init (có thể là một bản gốc, hoặc một lọc):

$.fn.foo = function(){ return this; }; 

$.pluginName là một chức năng có thể được gọi là $.pluginName(). Điều này rất hữu ích cho việc tạo ra các chức năng tiện ích, hoặc lưu trữ các trạng thái mặc định của một plugin cụ thể.

Ví dụ:

$.foo = function(){...}; 

bar = $.foo(); 

* Chức năng máy jQuery (jQuery() hoặc $()) thực sự trả về một đối tượng new jQuery.init

+0

Bạn có thể mở rộng đối tượng Jquery.init là gì không? –

+0

@downvoter, quan tâm giải thích? – zzzzBov

+0

Làm cho tinh thần. Cảm ơn! –

2

$.pluginName là cho các chức năng tiện ích đã được thêm vào không gian tên jQuery, chẳng hạn như :

$.isArray(); 
$.extend(); 
etc 

$.fn.pluginName là cho các chức năng mà làm việc trên danh sách các yếu tố như được trả về bởi các jQuery $(...) chức năng:

$(...).attr(...); 
$(...).first(...); 
etc 
Các vấn đề liên quan