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 и изменении размера окна, я бы инициализировал метод .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+
.resize
становится.resize
.$(window).resize
каждый раз, когда запускается событиеonComplete
fancybox. Какая-то идея, как не добавлен обратный вызов для события изменения размера, который нужно заменить?