Прикрепите функцию fancybox / lightbox / idontknowbox к элементу - PullRequest
1 голос
/ 10 мая 2010

Я разрабатываю галерею jquery и хочу параметризировать функцию подсветки для поддержки любых лайтбоксов (например, fancybox). По умолчанию я сделал что-то вроде:

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

поэтому в коде, создавая элемент, я проверю это свойство, и если оно установлено на функцию, я хочу вызвать его для элемента:

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

где ссылка - это элемент привязки, содержащий миниатюрное изображение, с href, установленным на исходное изображение. По моей идее, когда вызывается плагин, я установил функцию с помощью:

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

но "вызов" на functionHighlighter выполняет непосредственно fancybox, который возвращает пустую область. То, что я хочу подражать, это выполнение

link.fancybox();

, который правильно строит плагин по ссылке. Есть идеи?

1 Ответ

0 голосов
/ 10 мая 2010

вам нужно установить эти параметры:

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)});
...