2013-04-10 100 views
1

我使用此代码加载fancybox弹出窗口,它隐藏另一个div在父页面打开时,然后当它关闭我需要它再次显示div,但它似乎无法找到要显示的原始div。Fancybox显示div关闭

<script type="text/javascript"> 
     $(document).ready(function() { 
     $(".fancybox").fancybox(); 
      $(".fancybox").click(function() { 
       $("#divtotoggle").hide(); 
       $.fancybox.open({ 
         'type': 'iframe', 
        padding : 0, 
        afterClose: function() { 
         //$("#divtotoggle",parent.document).show(); 
         $("#divtotoggle").show(); 
        } 
       }); 
      }); 
     }); 
</script> 

我在afterClose功能

得到了TypeError: document.getElementById(...) is null我想这是因为它的父,但$("#divtotoggle",parent.document).show();也会失败。

+0

您是否检查过,如果在关闭花式框后执行afterClose()之后的方法?你能尝试警报吗? – 2013-04-10 16:08:39

+0

是的,我在afterClose中添加了一个警报,它显示警报,但是它在加载弹出窗口之前显示它看起来不正确,当然它应该在弹出窗口关闭后执行此操作。 – PeteTheGreek 2013-04-10 16:13:31

+0

你可以看到fancybox的文档了解更多详情 http://fancybox.net/api。你正在使用'iframe',因此你应该使用'父'。$。fancybox.close();',我想,我还没有测试! – 2013-04-10 16:23:06

回答

1

我想你是不是用正确的方式的fancybox API: 试试这个,我还没有测试它虽然: 注:如果这不起作用,那么,去这个链接,并调整点点 http://fancybox.net/api

$(".fancybox").fancybox({ 
    'type': 'iframe', 
    'onStart':function(){ 
     $("#divtotoggle").hide(); 
    }, 
    'onClosed': function() { 
     $("#divtotoggle").show(); 
    } 
});