根据jQuery plugin authoring guidelines,基本的插件结构如下所示:
(function($){
$.fn.myPlugin = function( options ) {
return this.each(function() {
// Do something...
});
};
})( jQuery );
然而,我在我检查的几个jQuery插件中看到了以下模式:
(function($){
$.extend($.fn, {
myPlugin: function( options ) {
$(this).each( function() {
// Do something
});
},
})
})(jQuery);
有人可以解释第二种方法 - 什么是$.extend(...
和对象符号呢?
谢谢 -
答案 0 :(得分:4)
这两个基本上完成了相同的任务,但方式略有不同。
$.fn.myPlugin = …
直接将函数分配给jQuery命名空间中所需的位置。
$.extend($.fn, {myPlugin:…
扩展 $.fn
对象,并将对象指定为第二个参数。在这种情况下,对象只包含一个属性myPlugin
,这是要添加的函数。
你可以使用任何一种结构,虽然我个人认为第一种结构更清洁。
答案 1 :(得分:2)
将两个或多个对象的内容合并到第一个对象中。
所以这个:
$.extend($.fn, { ... });
只是将对象文字的内容合并到$.fn
中。像这样使用$.extend
只是另一种做正常/标准分配的方式:
$.fn.myPlugin = ...