这对我来说是一个巨大的难题。我会详细解释。
我通常只是像这样触发fancyapps fancybox插件......
$("a.gallery-thumb").fancybox({
afterLoad : function() {
/* shtuff */
}
});
但是我需要在a.gallery-thumb
单击时传递一个独特的变量。这个独特的变量是使用这个生成的......
FB.Canvas.getPageInfo(function(info) {
var scrollPosition = info.scrollTop;
};
这个scrollPosition
唯一的变量是单击 my 时的当前滚动位置a.gallery-thumb
。
所以我需要将scrollPosition
变量传递给下面的fancybox函数。
$("a.gallery-thumb").fancybox({
afterLoad : function() {
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
}
});
现在你可能在想我为什么不这样做...
$("a.gallery-thumb").fancybox({
afterLoad : function() {
FB.Canvas.getPageInfo(function(info) {
var scrollPosition = info.scrollTop;
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
};
}
afterShow : function() { },
onUpdate : function() { }
});
好的 - 这工作正常,但我需要scrollPosition
其他花式回调中的变量,比如afterShow
and onUpdate
。但可以肯定的是,我可以重复FB.Canvas.getPageInfo
功能......不完全是,我需要在进行图库初始点击时生成的原始值。
所以也许我必须做这样的事情,但我似乎无法让它工作,关于如何让下面的脚本工作的任何想法?
$("a.gallery-thumb").on('click', function (){
event.preventDefault(); /* I'm trying to stop the image opening by default before my fancybox function runs */
FB.Canvas.getPageInfo(function(info) {
var scrollPosition = info.scrollTop;
$(this).attr('rel','fancybox-thumb').fancybox({
onUpdate : function() {
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
},
afterLoad : function() {
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
},
afterShow : function() {
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
},
onUpdate : function() {
$('.fancybox-wrap').css('top', '+=' + scrollPosition + 'px');
}
});
});
});
请参阅此处的 js fiddle 模拟我的 fancybox 函数未触发的问题...
[http://jsfiddle.net/svsdx/1631/][1]