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
?
答案 0 :(得分:1)
如果你想要的是在打开fancybox时执行一个函数并调整窗口大小,那么我会在 < / p>
.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;
}
});
然后,使用{em>委托表单中的resize
方法绑定.on()
事件,以获取全局变量$currentIndex
的当前或未来值,如:
$(window).on("resize", $(this), function () {
console.log("resized, current index = " + $currentIndex);
});
参见 JSFIDDLE
注意:.on()
需要jQuery v1.7 +