检索Fancybox的变量?

时间:2013-09-25 14:46:43

标签: javascript jquery fancybox

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

1 个答案:

答案 0 :(得分:1)

如果你想要的是在打开fancybox时执行一个函数并调整窗口大小,那么我会在.resize()回调中初始化onComplete方法,如 < / p>

由于currentIndex变量是本地变量并仅在fancybox回调中使用,因此创建一个全局变量并将currentIndex的值传递给onComplete回调中的该变量:

var $currentIndex;

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

然后,使用{em>委托表单中的resize方法绑定.on()事件,以获取全局变量$currentIndex的当前或未来值,如:

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

参见 JSFIDDLE

注意.on()需要jQuery v1.7 +