2011-07-04 63 views
2

按照jQuery plugin authoring guidelines,一個基本的插件結構是這樣的:瞭解jQuery插件開發模式

(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(...和對象符號?

Thanks-

回答

4

這兩個基本上完成同樣的任務,但在一個稍微不同的方式。

$.fn.myPlugin = …直接將函數分配給jQuery名稱空間中所需的位置。

$.extend($.fn, {myPlugin:…延伸$.fn對象與對象指定爲第二個參數。在這種情況下,對象只包含一個屬性myPlugin,這是要添加的功能。

你可以使用任何一種結構,儘管我個人發現第一個更清潔。

+0

感謝,第一種方式似乎更清潔 – Yarin

2

$.extend function的用來:

合併兩個或多個對象的內容一起放入第一個對象。

所以這個:

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

只是合併對象文本的內容到$.fn。使用$.extend這樣只是真的只是在做正常/標準分配的另一種方式:

$.fn.myPlugin = ... 
+0

非常感謝爲explanation-邁克爾由頭髮 – Yarin

+0

@Yarin打敗你:這很酷,我主要想獲得官方的'.extend'文檔的鏈接。是的,直接任務是更清潔(恕我直言,YMMV等)。 –