2010-05-10 3 views
1

Я разрабатываю jquery gallery, и я хочу параметризовать функцию подсветки для поддержки любых видов лайтбоксов (например, 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

Да, есть уже расширение по умолчанию, я опустил его только для краткости. В ядро ​​моего плагина я могу правильно получить функциюHighlighter как $ .fancybox, моя проблема в том, что я не знаю, как применить ее к объекту, используя ссылку functionHighlighter. – tanathos

+0

Обновлено. может быть, так? – XGreen

+0

В моем коде плагина я не могу сделать вызов, например $ .fancybox(), потому что я не знаю, является ли функция, используемая как highlighter, fancybox или другим плагином (например, лайтбоксом). Я должен обобщить вызов ... – tanathos