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);
要回答第二个问题 – 如何关闭现有模态并随后打开新模式 – 您需要做三件事:
- 添加持续:对于第一个模态的回调选项为true。根据Eric Martin的网站,“如果为true,则数据将在模态调用之间保持,如果为false,则数据将恢复为其原始状态。”
- 将onClose回调添加到第一个模态。
- 在运行该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(); });