Fancybox(1.3)正在为我的内容添加额外的div

时间:2012-06-28 20:38:41

标签: jquery fancybox

我的网站页脚中有一份简报注册表格。在侧边栏中,我有一个链接,使用注册表单的div作为其内容触发fancybox窗口。

正如预期的那样,这会导致表单从页脚中消失并弹出到灯箱中。

我关闭了灯箱,它又回到原来的样子。有一个非常恼人的例外:它包含在一个额外的div中。我打开和关闭灯箱窗口的次数越多,它累积的div就越多。

现在,我通常会让fancybox从隐藏的div(表单的第二个副本)中获取内容,但它是由WordPress(mailchimp)中的插件生成的,我无法更改#id或表单名。

所以这是一个错误或fancybox的功能。我99.9%肯定不是我做错了什么。有人有办法删除包裹的div吗?我猜我可以尝试在onClosed中添加一些jquery片段,从而删除#email_signup中的div ...但我可能要等到明天再这样做。

相关代码:

JS

jQuery("#signMeUpBox a").fancybox({width:250});

HTML

<a href="#email_signup"><img src="...." /></a>

在一对fancybox打开/关闭后继承脚注代码:

<div style="width:auto;height:auto;overflow: auto;position:relative;">
<div style="width:auto;height:auto;overflow: auto;position:relative;">

    <div id="email_signup" style="">
        <h1 style="">email signup</h1>
        <div id="mc_signup" style="">
            <form method="post" action="#mc_signup" id="mc_signup_form" style="">
                <!-- ... -->
            </form><!-- /mc_signup_form -->
        </div><!-- /mc_signup_container -->
    </div>

</div>
</div>

修改

我把一个jsfiddle放在一起来说明情况。 http://jsfiddle.net/UD9P9/

1 个答案:

答案 0 :(得分:1)

是的,使用inline内容时,这是一个众所周知的错误。要解决此问题,请添加onCleanup回调,如下所示:

jQuery("#signMeUpBox a").fancybox({
 "width":250,
 "onCleanup": function() {
  var myContent = this.href;
  jQuery(myContent).unwrap();
 }
});

您可以在此处了解详情:http://groups.google.com/group/fancybox/browse_thread/thread/fab7b6d81a173b33

注意:解决方法适用于v1.3.x,v2.x中不存在此错误