2012-12-06 75 views
0

我已經看到了jQuery插件模式中的這段代碼,筆記部分提到我們可以使用jQuery.data函數將插件附加到DOM元素。我不明白的是如何使用這段代碼。有人可以提供如何使用此功能的例子,並解釋其意義?jquery插件模式使用jquery.data

$.fn[pluginName] = function (options) { 
     return $Extend(this).each(function() { 
      if (!$.data(this, 'plugin_' + pluginName)) { 
       $.data(this, 'plugin_' + pluginName, 
       new Plugin(this, options)); 
      } 
     }); 
    }; 
+1

查看文檔[here](http://api.jquery.com/jQuery.data/) –

+0

我明白.data是如何工作的,但我想看看上面這段代碼如何在jQuery插件中工作,以及信息通過上述代碼存儲在DOM中。 – neelmeg

回答

1

我覺得您特別提供的代碼點不允許插件重新初始化。

它的作用是當您第一次調用某個元素上的插件時,它會檢查其data以查看是否已經設置了屬性'plugin_' + pluginName。如果它一直存在,它什麼都不會做。如果尚未設置,則調用new Plugin()方法並將其存儲在其data中。這樣,插件方法很容易檢索。所有的方法所要做的就是使用$(this).data('plugin_' + pluginName)來檢索關於該插件的任何內容,特別是針對該元素。

所以,如果你想使2插件調用,如:

$(".class").specialPlugin({ 
    key1: "value1" 
}); 

$(".class2").specialPlugin({ 
    key23: "value23" 
}); 

然後每個元素的數據將只具有信息專門到原來的設置。

實際存儲在data中的是什麼new Plugin返回,並且範圍可以是從許多事物的完整對象的任何地方或者僅僅是原始的options對象,以便於參考。