无法关闭fancybox ajax窗口

时间:2014-05-19 14:20:06

标签: jquery ajax fancybox

无论我如何调用close方法,我似乎无法使其正常工作。

我尝试了所有可能的变体:

$.fancybox.close();
parent.$.fancybox.close();
$.fn.fancybox.close();
etc...

无论代码在何处或如何在我尝试在fancybox上调用close方法,它总是返回没有对象,并且该close是未定义的。我一直在失去fancybox的参考资料。

首先,我打开一个带有简单链接的fancybox窗口 <a href='".base_url('item/map_view/'.$item_id)."' class='itembox fancybox.ajax' data-fancybox-type='ajax' data-itemid='".$item_id."'>".$item['titulo']."</a>

然后,从已经打开的fancybox窗口,一个按钮触发另一个按钮打开(注意:它关闭第一个)。 <input type="button" value="Eu quero!" class='itembox fancybox.ajax' href="<?php echo base_url("email/quer_item/".$idata["id"])?>" data-fancybox-type='ajax'>

最后,我希望能够在第二个fancybox窗口上处理表单的提交,它将显示一个消息框(使用Messi)并关闭fancybox。但我开始认为这可能是不可能的。

处理提交的代码:

$('#email_queroitem').submit(function(e) {
    e.preventDefault();
    $.post($("#email_queroitem").attr("action"), 
        $("#email_queroitem").serialize(), function(data) {

        var json = myParseJSON( data );
        if( json.status=="OK" ) {

            $.fancybox.close(); // this is where I want to close

            new Messi(json.msg, {title: 'Email enviado com sucesso!',
                titleClass: 'success', modal: true });
        } else {
            new Messi( json.msg, {title: 'Oops...', titleClass: 'anim error', 
                buttons: [{id: 0, label: 'Fechar', val: 'X'}]});
        }
    }).fail( function() { general_error(); } );
    return false;
});

1 个答案:

答案 0 :(得分:0)

我在使用colorbox时遇到了类似的问题。我最终想到的是将对colorbox对象的初始调用保存到全局命名空间。例如:

globalNamespace.myBox = $colorbox({href:'whatever'});
$.post('http://yoururl').success(function(data){
    // call close function like this
    globalNamespace.myBox.close()
});