Fancybox背景滚动与.open()

时间:2016-07-20 21:15:12

标签: jquery fancybox

我有一些向导类型的工作流程与fancyboxes一起显示并从一个移动到另一个工作正常。我这样打开第一个:

$('a.fancybox').fancybox();

在html中,我只是在fancybox中有一个锚标记,其中包含我想要的锚ID。

当我从第一个盒子移动到第二个盒子时出现问题,我在服务器的响应后打开了这样的盒子:

$.fancybox.open({ href: '#divIwantAsFancybox' });

这样可以很好地打开fancybox,但在这种情况下,背景中的页面会滚动它在第一个框中没有的位置。我已经检查了由fancybox生成的内联css和html,并确定重要(可能)的唯一区别是,当使用.open()时,我想要的内容不再呈现在具有类fancybox-overlay的div中。手动将代码移动到浏览器中的div或多或少会使fancybox无法使用。我在这里不知所措,并且不知道如何在不滚动背景的情况下指示fancybox打开第二个框。

PS:我已经尝试过在beforeShow和afterClose中设置overflow: hidden的css hack,虽然这对我在浏览器上起作用,但它对移动浏览器没有预期的效果。出于这个问题的目的,我现在想坚持使用网络解决方案,但可能会避免这种黑客攻击,因为我知道它在移动浏览器上对我不起作用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以经过几个小时的挖掘后,我发现其他一些人使用overflow: hidden技巧但在身体上而不是其中一个fancybox div。当您拨打$.fancybox()$.fancybox.open()时,您可以传递回调函数,如下所示:

$.fancybox({ beforeShow: function() { 
    $('body').css({'overflow':'hidden'});
}, afterClose: function() {
    $('body').css({'overflow':'visible'});
}});

但是,如果有人知道更好的方法来处理这个问题,请随意添加两美分,因为在我看来,这是一个fancybox的错误。我希望调用$.fancybox.open()的行为与使用$('a.fancybox').fancybox()引用锚点的行为相同。