2010-05-10 44 views
1

我正在開發一個jquery庫,並且我想參數化高亮函數以支持任何種類的lightbox(例如fancybox)。 在我的默認我不喜歡的東西:在一個元素上附加fancybox/lightbox/idontknowbox函數

$.fn.mygallery.defaults = { 
    functionHighlighter: null 
} 

所以在代碼,創建項目,我會檢查這個屬性,如果它是設置好的一個功能,我想打電話給它的元素:

if ((typeof opt.functionHighlighter) === "function") { 
    opt.functionHighlighter.call(link); 
} 

其中鏈接是包含微縮圖像的錨點元素,並將href設置爲原始圖像。在我的想法,當插件被調用時,我設置的函數:

$("#gallery").mygallery({ functionHighlighter: $.fancybox }); 

但「呼籲」對functionHighlighter直接執行的fancybox,返回的空白區域。 我想模仿是

link.fancybox(); 

是建立正確的鏈接插件執行。 任何想法?

回答

0

你需要設置這些選項爲:

jQuery.fn.pluginName = function (options) { 

var defaults = { 

    fancyObject: '', 

    fancyPlugin: '', 

    fancy: '' 
}; 

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

return this.each(function() { 

    //plugin code 

    if (options.fancy){ 
     $.options.fancyPlugin(options.fancyObject); 
    } 


}); 

}; 

$(selector).pluginName({fancy:true, fancyPlugin: 'fancybox', fancyObject: $(selector)}); 
+0

是的,有已經默認的擴展,我忽略它只是爲了簡潔。進入我的插件的核心,我可以正確檢索functionHighlighter作爲$ .fancybox,我的問題是,我不知道如何將它應用到使用functionHighlighter引用的對象。 – tanathos 2010-05-10 12:35:32

+0

更新了它。也許這樣? – XGreen 2010-05-10 12:43:28

+0

在我的插件代碼中,我無法打電話,像$ .fancybox(),因爲我不知道用作熒光筆的函數是fancybox還是其他插件(如lightbox)。我要概括電話... – tanathos 2010-05-10 12:48:19