我经常看到以下两种模式。两者有什么区别?什么时候适合?
$.pluginName = function(){}
和
$.fn.pluginName = function(){}
答案 0 :(得分:9)
很简单:
$.fn.pluginName
是一个可在所有jQuery.init
*个对象上调用的函数。这对于使链式功能与对象一起使用非常有用:
示例:
$.fn.foo = function(){...};
$('#bar').foo();
要继续链接对象,您需要返回另一个jQuery.init
对象(可以是原始对象,也可以是已过滤的对象):
$.fn.foo = function(){ return this; };
$.pluginName
是一个可调用为$.pluginName()
的函数。这对于创建实用程序函数或存储特定插件的默认状态非常有用。
示例:
$.foo = function(){...};
bar = $.foo();
* jQuery工厂函数(jQuery()
或$()
)实际返回new jQuery.init
对象
答案 1 :(得分:2)
$.pluginName
用于已添加到jQuery名称空间的实用程序函数,例如:
$.isArray();
$.extend();
etc
$.fn.pluginName
用于处理由jQuery $(...)
函数返回的元素列表的函数:
$(...).attr( ... );
$(...).first( ... );
etc