4

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

想法?

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

4 回答 4

3

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

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;
});
于 2010-04-27T14:24:26.170 回答
2

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

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

于 2010-11-24T19:58:04.863 回答
1

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

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

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

$('a#ask').click(function(){
    $.modal.close();
    $('#modal-contact').modal();
});
于 2013-02-05T02:46:40.170 回答
1

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

  1. Persist: true添加到第一个 modal 的回调选项中。根据 Eric Martin 的网站,“如果为 true,则数据将跨 modal 调用进行维护,如果为 false,则数据将恢复到其原始状态。”
  2. onClose回调添加到第一个模式。
  3. 在运行函数以打开第二个模态之前关闭第一个模态。

因此,当您使用$.modal.close()关闭模式时,onClose将运行,从而触发动画并关闭模式。由于persist 为 true,因此将保留以下函数。您的函数将触发,并且您的第二个模式将打开。

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

} });

于 2010-09-02T18:33:57.973 回答