2016-01-03 65 views
2

您可以在不使用任何JavaScript的情況下初始化引導下拉框。您也可以手動初始化它。從數據屬性初始化JQuery插件?

我創建了一個JQuery插件,並將我的所有默認值和選項與$.extends合併。

var settings = $.extend(true, {}, defaults, options, $self.data()); 

我的插件get的初始化像任何普通插件一樣。

$('ul.dropdown.users-list').awesomeplugin({/* ... */}); 

什麼是對具有自動初始化,也不會得到複製,如果它是一個自舉下拉作品手動初始化,以同樣的方式正確的方法?

比如我明白,我可以做這樣的事情:

$(function(){ 
$('[data-myawesomeplugin]').each(function(){ 
    $(this).myawesomeplugin(); 
}); 
}); 

但是,如果有人決定手動初始化,就不會發生初始化兩次?

+0

這很簡單,除非它應該與將來添加一些時間的動態插入元素配合使用。如果沒有,您只需搜索具有特定數據屬性的元素,然後在這些元素上運行插件。 – adeneo

+0

@adeneo但是如果你然後決定手動做一次指定一些選項,你不會手動初始化插件,然後從數據屬性獲得它自己的初始化?因此它會被初始化兩次? – Johnston

+1

只需向插件中已初始化的元素或類似內容添加一個類,然後在插件中檢查該類,這是避免雙重初始化的常用方法 – adeneo

回答

0

頁面加載(或任何其他必需的依賴加載)後,您可以選擇所有需要的元素(使用jquery選擇器)並初始化它們。 此外添加一些存儲所有初始化對象的對象池。 在對象初始化過程中,您可以檢查該對象是否已經初始化,如果是這樣,您只需返回該對象並且不創建任何新對象。識別獨特的對象並提取舊對象完全取決於您的使用案例。