2012-05-30 34 views
2

我有一個插件,它內有一個公共函數($ fn.myplugin.mypublicfunct)。我的意圖是從myplugin之外的單獨的.ajaxSuccess調用mypublicfunct。因此需要公共職能。如何在公共功能中訪問插件的用戶定義選項?

場景:myplugin做它的事...通過Ajax的表單提交是不同的插件...當該插件做它的.ajaxSuccess我想調用mypublicfunct但能夠使用myplugin的用戶選項/默認。

這有道理嗎?我是否以正確的方式提出正確的問題?

我試圖把

選擇採用VAR = $ .extend({} $ .fn.myplug.defaults,選項);

在公共功能,並得到一個錯誤的選項沒有定義(或類似)。我是谷歌尋找一個風暴尋找一個例子,解決方案等,但我仍然堅果'。

回答

1

我首先通過說我是jQuery插件開發的相對新手來證明這一點。而且,這是我自己掙扎的事情,所以對我來說這是一個很好的問題。

我傾向於做的是存儲我的選擇所選擇的要素的數據屬性對象(與插件名稱命名空間的):

var data = { 
    options: options, 
    otherData: otherData 
}; 

$(this).data('myPlugin', data); 

目的是然後在公用類的函數訪問所以:

var options = $(this).data('myPlugin').options;  

這感覺有點笨重,但它的工作。

+0

Thanks @ net.uk.sweet - 好的,這是一個開始。因此,您將選項存儲在某個元素的data屬性中,然後抓取它。有趣。無論如何,這似乎有點尷尬。沒有冒犯,但讓我們看看還有什麼進來。 –

+0

沒有采取!我不得不說,我迄今爲止的插件開發經驗一直是有點尷尬。 –

+0

只是要清楚,我不會將數據存儲在任何舊元素上,我會將其存儲在插件所針對的選定元素上。我想有些情況下,你可能有一個插件沒有通過選擇器,在這種情況下,這種方法是行不通的。 –

相關問題