これは私にとって大きな難問です。完全に説明します。
私は通常、このようなfancyappsfancyboxプラグインを起動するだけです...
$("a.gallery-thumb").fancybox({
afterLoad : function() {
/* shtuff */
}
});
a.gallery-thumb
しかし、がクリックされたときに、私はユニークな変数を渡す必要があります。このユニークな変数はこれを使用して生成されます...
FB.Canvas.getPageInfo(function(info) {
var scrollPosition = info.scrollTop;
};
このscrollPosition
ユニークな変数は、mya.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() { }
});
OK-これは正常に機能しますが、やなどscrollPosition
の他のfancyboxコールバックに変数が必要です。しかし、関数を繰り返すことができるのは確かです...完全ではありませんが、ギャラリーの最初のクリックが行われたときから生成された元の値が必要です。afterShow
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');
}
});
});
});
fancybox関数が起動しないという私の問題をエミュレートするjsfiddleを参照してください...
[http://jsfiddle.net/svsdx/1631/][1]