Получить переменную Fancybox?

0

Fancybox 1.3 использует внутренне объявленную переменную с именем currentIndex. Он содержит индекс отображаемого в настоящее время изображения из галереи.

Поскольку я не мог найти способ, как получить доступ к вышеуказанной переменной из другого сценария, я использую обратный вызов Fancybox onComplete, который вызывается с параметрами, включая текущий индекс изображения:

 $.fancybox.currentindex = -1; // I'm injecting a new variable here
 $(document).ready(function() {
   $('.fancybox').fancybox({
       'onComplete'    : function(itemArr, currIx, selOpts) {
                           $.fancybox.currentIndex = currIx;
                           ...
                         }
    })
 });

 // use of "shared" variable $.fancybox.currentindex
 $(window).resize(function () {
    clearTimeout(this.id);
    this.id = setTimeout('$.fancybox.pos($.fancybox.currentIndex)', 200);
 });

Есть ли лучший способ, как получить currentIndex для window.resize обработчика событий?

Теги:
fancybox

1 ответ

1

Если вы хотите выполнить функцию при открытии fancybox и изменении размера окна, я бы инициализировал метод .resize() внутри обратного вызова onComplete например

Поскольку currentIndex переменная является локальной и используется в FancyBox обратных вызовов только создать глобальную переменную и передать значение currentIndex этой переменной в пределах onComplete обратного вызова:

var $currentIndex;

$(".fancybox").fancybox({
    cyclic: true,
    onComplete: function (currentArray, currentIndex, currentOpts) {
        console.log("completed, current index = " + currentIndex);
        $currentIndex = currentIndex;
    }
});

Затем .on() событие resize с помощью .on() в его делегированной форме, чтобы получить текущее или будущее значение глобальной переменной $currentIndex например:

$(window).on("resize", $(this), function () {
    console.log("resized, current index = " + $currentIndex);
});

См. JSFIDDLE

Примечание: .on() требует jQuery v1. 7+

  • 0
    Спасибо за ответ, однако что-то в коде не так. При отображении следующих изображений из галереи последующее изменение размера загрязняет журнал всеми индексными номерами . Похоже, инициализация .resize становится .resize .
  • 0
    Кажется, он добавляет новый обратный вызов в $(window).resize каждый раз, когда запускается событие onComplete fancybox. Какая-то идея, как не добавлен обратный вызов для события изменения размера, который нужно заменить?
Показать ещё 4 комментария

Ещё вопросы

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