可以排队的jQuery模态

时间:2011-09-04 15:00:47

标签: javascript jquery ajax plugins modal-dialog

目前,我有一个简单的应用程序,Ajax到服务器,获取一些JSON,然后用它做一些事情。我想添加消息来显示加载图像和其他信息,但我现在正在努力使用simplemodal,因为它不会对模态进行排队,因此它只是在它进入时就会触发所有内容。我试过了为它写一个队列,没有那么好用:)

该应用应该:

  • 发送ajax请求(显示模式,停止用户点击任何内容)
  • Ajax完成(隐藏模态,允许点击)
  • 如果[例如]返回JSON对象设置了“message”(if (strJson.message)) { })将消息显示为模态
  • 允许用户关闭模式

当他们正在阅读该消息时,如果另一个ajax调用已经过去,并且我们有更多的模式要显示,那么它们应该排队以显示当前关闭的时间。

这似乎应该是那种东西,但我看不到任何具体提到它的东西。

有什么想法吗? :)

1 个答案:

答案 0 :(得分:4)

您可以接收消息并将它们放入数组中,然后当对话框关闭时,您可以检查是否有更多消息,如果有来自阵列的下一条消息并显示它。这是一个使用jQuery UI Dialog的示例。

HTML

<div id="dialog"></div>

的JavaScript

var messages = [],
    addMessage = function (msg) {
        messages.push(msg);
        if (!$('#dialog').dialog("isOpen")) {
            displayMessage();
        }
    },
    displayMessage = function () {
        $('#dialog').html(messages.shift()).dialog('open');   
    };
$(function () {
    $('#dialog').dialog({
        autoOpen: false,
        modal: true,
        close: function () {
            if (messages.length > 0) {
                displayMessage();
            }   
        }
    });
    addMessage('First Message');
    addMessage('Second Message');
});