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

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

想法?

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

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

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

UPDATE

 $('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; }); 

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

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

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

  1. 添加持续:对于第一个模态的回调选项为true。根据Eric Martin的网站,“如果为true,则数据将在模态调用之间保持,如果为false,则数据将恢复为其原始状态。”
  2. onClose回调添加到第一个模态。
  3. 在运行该function之前关闭第一个模态以打开第二个模态。

因此,当您使用$ .modal.close()关闭模态时, onClose将运行,从而触发动画并关闭模态。 由于持久性为真,因此将保留以下function 。 你的function会激活,你的第二个模态会打开。

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

}};

升级到最新版本的SimpleModal,目前为1.4.4。 根据http://www.ericmmartin.com/simplemodal-1-4-3-released/ ,超时问题在1.4.2中得到修复:

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

您上面的代码稍作修改,应按预期工作:

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