0

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

我希望它在重新打开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
    }
});
4

1 回答 1

1

这取决于您对目标所做的更改类型div,但如果不重新加载页面或对页面执行时髦的 Ajax 调用并从那里获取 div 内容,您将无法“重置”它们。

解决这个问题的最简单方法是将该 div 的标记存储在一个变量中(使用 jQuery ,并使用回调html()中的变量“重置”该 div 。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,这应该可以工作。

于 2013-05-08T16:26:59.453 回答