2012-02-10 49 views
0

我目前正在探索jQuery's plugin authoring和:jQuery插件教程混亂,無法看到初始化參數

var methods = { 
    init : function(options) { 
     console.log(options); 
     return this.each(function() { 
      console.log(options); 
     }); 
    } 
}; 

教程說要維護chainability(我可以使用),我return this.each()。我看到調用$('div').myPlugin({'test':'test'})調用init函數並登錄到控制檯options。然而,我似乎並沒有在return this.each()內看到options

有人可以解釋爲什麼是這樣嗎?這是正常的行爲?

回答

2

jQuery的.each()方法有一組預定義的參數,所以第一個參數將被當作當前元素的索引。所以「選項」將被索引替換。不需要將「選項」移交給函數,但是,它會在函數創建閉包時自動提供。

return this.each(function() { 
    console.log(options); 
}); 

提示:你是不是真的返回this.each()...技術上你是剛剛返回「這個」

+0

感謝您的解釋。我仍然試圖理解閉包,這就是爲什麼我不能看到一段代碼是否是閉包。 – Joseph 2012-02-10 09:40:32