【问题标题】:Attach fancybox/lightbox/idontknowbox function on an element在元素上附加 fancybox/lightbox/idontknowbox 功能
【发布时间】:2010-05-10 12:14:27
【问题描述】:

我正在开发一个 jquery 库,我想参数化荧光笔功能以支持任何类型的灯箱(例如花式灯箱)。 在我的默认设置中,我做了类似的事情:

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

所以在代码中,创建项目,我会检查这个属性,如果它被设置为一个函数,我想在元素上调用它:

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

其中链接是包含微型图像的锚元素,href 设置为原始图像。在我的想法中,当插件被调用时,我将函数设置为:

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

但是functionHighlighter 上的“调用”直接执行fancybox,它返回一个空白区域。 我要模仿的是执行

link.fancybox();

在链接上正确构建插件。 有什么想法吗?

【问题讨论】:

    标签: jquery function jquery-plugins lightbox fancybox


    【解决方案1】:

    您需要将这些设置为选项:

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

    【讨论】:

    • 是的,已经有了 defaults 的扩展,为了简洁我省略了它。在我的插件的核心中,我可以正确地将 functionHighlighter 检索为 $.fancybox,我的问题是我不知道如何使用 functionHighlighter 引用将它应用于对象。
    • 在我的插件代码中,我不能像 $.fancybox() 这样调用,因为我不知道用作荧光笔的函数是fancybox 还是其他插件(如lightbox)。我必须概括一下这个电话......
    • 我猜应该是这样的。但还没有尝试过。抱歉,如果它不起作用
    • with options.fancyPlugin(options.fancyObject) 我得到了与 opt.functionHighlighter.call(link) 相同的结果:插件fancybox 立即执行并且有一个空白区域...
    • 如果你想使用 blabox,我更新了为每个元素设置的答案
    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多