在div中加载fancybox内容?

时间:2013-09-01 12:05:34

标签: jquery html iframe fancybox-2

我试图通过将内容放在div中(而不是将其浮动在屏幕的中心)来更改fancybox 2功能,该div最初将被隐藏,并将扩展以适合其内容。当关闭按钮时,div将缩小并再次隐藏。

我正在使用iframe fancybox类型,并且将加载的内容是html。 我尝试使用appendTo,但没有成功,有任何想法如何解决这个问题?

fancybox js文件:

overlay:f('<div class="fancybox-overlay"></div>').appendTo(b.parent||"body")

如果appendTo myDiv没有任何变化(内容仍然加载但在正文中间):

overlay:f('<div class="fancybox-overlay"></div>').appendTo("#myDiv")

2 个答案:

答案 0 :(得分:2)

您可能不需要fancybox,但可以创建自己的自定义脚本。

只是为了好玩,使用像这样的HTML

<a class="myfancy" href="http://jsfiddle.net/">show my content in div</a>
<div id="targetContent"> 
    <a id="myClose" href="javascript:;">X</a>
    <iframe id="targetIframe"></iframe>
</div>

使用一些CSS隐藏#targetContent之类的

#targetContent {
    position: relative;
    display: none;
    width: 500px;
    height: 350px;
    overflow: visible;
    background-color: #fff;
}

按照您需要的方式设置关闭按钮#myClose的样式。

还为iframe设置基本CSS,如

#targetIframe {
    width: 100%;
    height: 100%;
    border: 0 none;
}

然后使用此代码将所有选择器绑定到其特定事件和回调以实现平滑过渡

jQuery(function ($) {
    // cache elements
    var $targetDiv = $("#targetContent"),
        $iframe = $targetDiv.find("#targetIframe"),
        $close = $targetDiv.find("#myClose");
    // bind click events to first link and close button
    $(".myfancy").on("click", function (e) {
        e.preventDefault();
        $iframe.attr({
            "src": this.href // add the content to iframe before showing
        }).parent($targetDiv).slideDown(500, function () { //show div
            $close.fadeIn(200).on("click", function () { 
                $(this).fadeOut(100, function () { // fade out close button
                    $targetDiv.slideUp(500, function () { // hid div by sliding it up
                        $iframe.removeAttr("src"); // remove after closing the box
                    }); // slideUp
                }); // close fadeOut                
            }); // on click myClose
        }); // slideDown
    }); // on click link
}); // ready

参见 JSFIDDLE

注意.on()需要jQuery v1.7

答案 1 :(得分:0)

您可以在花式框选项中添加一个选项parentEl

就像parentEl: '.myDivClass'