我有一个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插件?
答案 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();
};