0

这是我的js代码

        jQuery('.fancybox').fancybox({


            beforeLoad: function(current, previous) {

                document.getElementById("petition-form").reset();

                jQuery('#petition-form').show();

                jQuery('.petition-message').html("");

                jQuery('.petition-message').hide();

            },


            afterClose: function() {

                jQuery.fancybox.open('#cancelform');


            }


        }

        );

关闭第一个弹出窗口时会打开第二个弹出窗口,但第二个弹出窗口也会关闭。我正在使用 fancybox 2+ 。我还收到一个 js 错误 TypeError: this.overlay is null 。

4

2 回答 2

2

升级到最新版本后我遇到了同样的问题。快速修复但不是解决方案是在“关闭后”中添加短暂的延迟。这似乎可以及时释放覆盖。

'afterClose':function () {
    setTimeout(func, 50);
    function func() {
        $.fancybox();
    }
},
于 2013-12-03T20:07:23.027 回答
0

尝试改变:

...
afterClose: function() {
    jQuery.fancybox.open('#cancelform');
}
...

afterClose: function() {
    jQuery('#cancelForm').fancybox().trigger('click');
}

演示:: jsFiddle

更新代码::

$(document).ready(function () {    
    $(".fancybox").fancybox({
        helpers: {
            overlay: null        
        },
        'afterClose': function() { 
            $("#cancelForm").fancybox().trigger("click");
        }
    });
});

更新小提琴

于 2013-08-26T08:04:34.750 回答