了解jQuery插件开发模式

时间:2011-07-04 22:19:32

标签: jquery jquery-plugins

根据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(...和对象符号呢?

谢谢 -

2 个答案:

答案 0 :(得分:4)

这两个基本上完成了相同的任务,但方式略有不同。

$.fn.myPlugin = …直接将函数分配给jQuery命名空间中所需的位置。

$.extend($.fn, {myPlugin:… 扩展 $.fn对象,并将对象指定为第二个参数。在这种情况下,对象只包含一个属性myPlugin,这是要添加的函数。

你可以使用任何一种结构,虽然我个人认为第一种结构更清洁。

答案 1 :(得分:2)

$.extend function用于:

  

将两个或多个对象的内容合并到第一个对象中。

所以这个:

$.extend($.fn, { ... });

只是将对象文字的内容合并到$.fn中。像这样使用$.extend只是另一种做正常/标准分配的方式:

$.fn.myPlugin = ...