0

Fancybox 1.3 确实使用内部声明的变量名为currentIndex. 它保存画廊中当前显示图像的索引。

由于我找不到方法,如何从其他脚本访问上述变量,我使用了 Fancybox 的 callback 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处理程序?

4

1 回答 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;
    }
});

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

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

JSFIDDLE

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

于 2013-09-25T16:49:37.447 回答