Триггер $ .fancybox.init () после добавления скрипта к голове

0

У меня есть API, который работает, добавляя скрипт fancybox в главный тег клиентской веб-страницы, но, очевидно, это происходит после того, как dom готов, поэтому функция init fancybox не вызывается
В fancybox.js:

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

Я попытался изменить его на:

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

а затем запускает функцию готовности дома по-разному (один за другим):

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

Я также попытался вызвать функцию init при загрузке скрипта:

$.fancybox.init();

Ничто не работает.
Я уверен, что fancybox.css, fancybox.js и даже mousewheel.js и easing.js загружаются в документ, прежде чем пытаться все это, я также добавил таймаут, чтобы быть уверенным.
Итак, вопрос в том, как можно инициализировать плагин fancybox после добавления js в тег заголовка?

Теги:
fancybox

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню