2013-05-08 52 views
0

当关闭时,有没有办法重置fancybox实例或刷新它的内容? 请注意,它从同一页面上的div抓取内容。如何在关闭时刷新Fancybox内容?

我希望它显示内容,就像它重新打开fancybox时第一次加载到dom中一样。

我想这是一个JavaScript/jQuery的东西,比Fancybox的东西,对不对?

$.fancybox.open({ 
    href: '#popup', 
    padding: 0, 
    autoWidth: true, 
    arrows: false, 
    closeBtn: false, 
    scrollOutside: true, 
    helpers: { 
     overlay: { 
      css: { 
       'background': 'rgba(0, 0, 0, 0.5)' 
      }, 
      locked: false 
     } 
    }, 
    afterClose: function() { 
     // Reset or refresh here 
    } 
}); 

回答

1

这取决于那种你正在为目标div变化的,但你不能“重置”他们无需重新加载页面或页面执行一个时髦的Ajax调用和获取div的内容。

解决这个越来越将是该分区的标记存储在一个变量(使用jQuery的html(),和“复位”该分区使用变量在afterClose()回调的最简单方法。

JS

var content = $('#popup').html(); // store content on documentReady() 

$.fancybox.open({ 
    href: '#popup', 
    padding: 0, 
    autoWidth: true, 
    arrows: false, 
    closeBtn: false, 
    scrollOutside: true, 
    helpers: { 
     overlay: { 
      css: { 
       'background': 'rgba(0, 0, 0, 0.5)' 
      }, 
      locked: false 
     } 
    }, 
    afterClose: function(){ 
     $('#popup').html(content); 
    } 
});  

它可能是最好用的fancybox的beforeLoad回调,连同这一点,要对所有的内容都这样做,但你似乎可以加载一个div,这应该工作。

+1

fancybox v2.x中没有'onLoad'回调 – JFK 2013-05-08 17:19:20

+0

非常感谢,尼克!漂亮而简单的解决方案 – jlmmns 2013-05-08 18:04:09

+1

不是问题,乐意提供帮助。感谢您提及@jfk我已经更新它,以使用应该是近似的v2回调。 – 2013-05-08 19:44:00