将脚本附加到头部后触发$ .fancybox.init()

时间:2014-05-01 15:38:31

标签: javascript jquery fancybox

我有一个API可以将fancybox脚本附加到客户端网页的head标签上,但很明显这是在dom准备就绪后发生的,因此fancybox的init函数不会被称为
在fancybox.js中:

$(document).ready(function() {
    $.fancybox.init();
});

我已经尝试将其更改为:

$(document).bind('ready', function() {
    $.fancybox.init();
});

然后以不同的方式(逐个)触发dom ready函数:

$(document).trigger("ready");
$().trigger("ready")
$().ready();

我还尝试在加载脚本时调用init函数:

$.fancybox.init();

似乎没什么用。
我确定在尝试所有这些之前,fancybox.css,fancybox.js甚至mousewheel.js和easing.js都已加载到documment中,我还添加了一个超时确认。
所以问题是,如何在将js附加到head标签后初始化fancybox插件?

1 个答案:

答案 0 :(得分:0)

我认为你不需要调用$.fancybox.init();但只是在加载fancybox脚本后初始化正确的选择器,所以我会在API中尝试:

if (!jQuery.fn.fancybox){
    // fancybox is not loaded
    jQuery.getScript("{path}/jquery.fancybox.js"); // you may need to change the path
    setTimeout(function(){
        // init fancybox selector
        jQuery(".selector").fancybox();
    }, 100); // delay selector initialization
} else {
    // fancybox script is ready so initialize (re-init) selector
    jQuery(".selector").fancybox();
};