我正在尝试从Fancybox内容内的链接关闭Fancybox实例。我正在按照this question的建议使用parent.jQuery.fancybox.close();。它是第一次工作,但此后没有工作。任何人都可以提出修复建议吗?

我用以下方法将我的内容div隐藏在页面中:

#content {
    display: none;
}

这是启动带有内容div的Fancybox的链接,其中包括关闭Fancybox的链接。
<a href="#" id="launch">Launch</a>

<div id="content">
    <p>Nunc porttitor pellentesque magna a pulvinar. Vestibulum id diam lectus. Praesent vel dictum est.</p>

    <a href="#" id="close">Close</a>
</div>

这是我的JS。我尝试过在打开Fancybox时将事件处理程序添加到关闭链接,但这没有帮助。
$(document).ready(function(){
    $('#launch').fancybox({
        'width': 300,
        'content': $('#content'),
        'onClosed':function () {
            $("#content").hide();
        },
        'onStart':function () {
            $("#content").show();
            $('#close').on('click', function(){
                //console.log($(this).parent);
                parent.jQuery.fancybox.close();
            })
        },
        'onCleanup':function () {
            $("#content").unwrap();
        }
    });
})

谢谢你们!

最佳答案

应该从在fancybox中打开的parent.jQuery.fancybox.close();中调用iframe。在您的情况下,您正在打开inline内容,因此不需要前缀parent。此外,您必须为内联内容提供正确的结构,然后从那里调用关闭函数。

因此您的内联内容应如下所示

<div style="display: none;">
 <div id="content">
   <p>Nunc porttitor pellentesque magna a pulvinar. Vestibulum id diam lectus. Praesent vel dictum est.</p>
   <a href="javascript:;" id="close">Close</a>
 </div>
</div>

由于上述原因,您不需要此CSS
#content {
    display: none;
}

因为#content已经在隐藏的div中。

那么您的关闭函数可以与fancybox脚本分开...也请注意以下fancybox脚本的更改:
$(document).ready(function(){
 $('#close').on('click', function(){
  //console.log($(this).parent);
  $.fancybox.close();
 }); //on
/*
// you could also do
$('#close').click(function(){
 $.fancybox.close();
});
*/
 $('#launch').click(function(){
  $.fancybox({
   'width': 300,
   'href': '#content',
   'onCleanup':function () {
    $("#content").unwrap();
   }
  });//fancybox
 }); // click
}); //ready

这是针对您似乎正在使用的Fancyboxv1.3.x。另外,如果希望.on()方法起作用,则应该使用jQueryv1.7.x。

关于javascript - parent.jQuery.fancybox.close();从Fancybox内部只能关闭一次Fancybox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9725023/

10-13 04:12