Jquery simplemodal关闭现有模态并打开一个新模式?

时间:2010-04-27 03:52:08

标签: jquery simplemodal

好吧,所以所有模态在右上角都有一个图像来关闭它们。我怎样才能再做另一个锚来做同样的事情?我以为我可以使用默认为“simplemodal-close”的“closeClass”选项,只是将该类添加到锚点,但它没有达到预期的效果。那是我应该做的吗?此外,所有模态将有一个“联系我们”链接,应该关闭它自己的模态并打开联系模式。我怎么能等到它关闭才能打开下一个呢?

想法?

$('a#ask').click(function(){
        $.modal.close(function(){
        });
        $('#modal-contact').modal();
    });

4 个答案:

答案 0 :(得分:3)

1)如果将simplemodal-close分配给对话框内容中的元素,SimpleModal会自动将close函数绑定到该元素的click事件。

2)通过交换内容或首先使用$ .modal.close()关闭对话框,有很多方法可以做到这一点。然后开一个新的。

<强>更新

$('a#ask').click(function(){
    $('#modal-contact').modal({onShow: function (dialog) {
        // handle the close yourself.
        // Don't use the closeClass on this element
        // call $.modal.close(); when you are done
        // call a function to open a new modal
    });
    return false;
});

答案 1 :(得分:2)

当前onClose事件的作用类似于onBeforeClose,并且没有为$ .modal.close()设计onAfterClose。 唯一的解决方法是等待:

$ modal.close(); window.setTimeout(showSecondModal,500);

答案 2 :(得分:1)

要回答第二个问题 - 如何关闭现有模态并随后打开新模式 - 您需要做三件事:

  1. Persist:true 添加到第一个模式的回调选项中。根据Eric Martin的网站,“如果为true,数据将在模态调用中保持,如果为false,则数据将被还原到原来的状态。“
  2. onClose 回调添加到第一个模式。
  3. 在运行该功能之前关闭第一个模态以打开第二个模态。
  4. 因此,当您使用 $ .modal.close()关闭模式时, onClose 将会运行,从而触发动画并关闭模态。由于持久存在,因此将保留以下功能。你的功能会激活,你的第二个模态会打开。

    $("#first_modal").modal({
         containerId: 'modal_id',
         persist: true,
         onClose: function (dialog) {
         dialog.container.fadeOut(100, function () {
            dialog.overlay.fadeOut(200, function(){
                $.modal.close();
                showSecondModal();      
            });
       });
    

    }     });

答案 3 :(得分:1)

升级到最新版本的SimpleModal,目前为1.4.4。根据{{​​3}}:

,超时问题已在1.4.2中修复
  

删除导致问题的close()的Opera解决方法

上面的代码经过轻微修改后应该按预期工作:

$('a#ask').click(function(){
    $.modal.close();
    $('#modal-contact').modal();
});