Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 引导:按顺序打开模态_Jquery_Twitter Bootstrap - Fatal编程技术网

Jquery 引导:按顺序打开模态

Jquery 引导:按顺序打开模态,jquery,twitter-bootstrap,Jquery,Twitter Bootstrap,我正在尝试构建自己的消息提示、错误、警告等插件,但我希望允许消息排队 我这样做的方式是在我的html中包含一个单一模式(这样我也可以包含诸如“错误”、“警告”或使用JSTL翻译的消息类型的标准名称),并使用以下方法调用它: function message(messageText, messageType) { $('#message').text(messageText); $('#messageIcon').removeClass(); if (messageType

我正在尝试构建自己的消息提示、错误、警告等插件,但我希望允许消息排队

我这样做的方式是在我的html中包含一个单一模式(这样我也可以包含诸如“错误”、“警告”或使用JSTL翻译的消息类型的标准名称),并使用以下方法调用它:

function message(messageText, messageType) {
    $('#message').text(messageText);
    $('#messageIcon').removeClass();
    if (messageType == messageTypes.ERROR) {
        $('#messageIcon').addClass("glyphicon glyphicon-remove-circle text-danger");
        $('#messageHeader').text($(" " + '#ERROR').text());
    } else if (messageType == messageTypes.WARNING) {
        $('#messageIcon').addClass("glyphicon glyphicon-warning-sign text-warning");
        $('#messageHeader').text(" " + $('#WARNING').text());
    } else if (messageType == messageTypes.INFO) {
        $('#messageIcon').addClass("glyphicon glyphicon-info-sign text-primary");
        $('#messageHeader').text(" " + $('#INFO').text());
    }
    $('#messageModal').modal();
}
但这只允许在仍显示模式时更改模式,因此只显示最后一条消息。 我已尝试将该函数的代码包装为:

$('#messageModal').on('hidden.bs.modal', function (e) {
    //above code
}
我认为只有当模态处于隐藏状态时才触发函数是合乎逻辑的。。。但这不起作用。
有没有办法解决这个问题,或者我是不是走错了路?

使用jQuery.queue()在队列中实现消息传递。欲了解更多信息,请查看

我没有做任何修改就离开了你的函数,只在队列中添加了一些消息,并添加了按钮来逐个启动队列

                var messages = $({});
                var messageTypes = {ERROR: 'ERROR', WARNING: 'WARNING', INFO: 'INFO'};                    
                $.each([
                    {message: 'message1', type: 'ERROR'},
                    {message: 'message2', type: 'WARNING'},
                    {message: 'message3', type: 'INFO'}],
                    function(i, data)
                    {
                        messages.queue('messages', function() 
                        {
                            message(data.message, data.type)
                        }); 
                    }
                );

                $("<button>", {
                    text: 'show message', 
                    click: function () {
                        showNextQueuedMessage()
                    }
                }).appendTo('body');   

                function showNextQueuedMessage()
                {
                    messages.dequeue('messages');                        
                }
var messages=$({});
var messageTypes={ERROR:'ERROR',WARNING:'WARNING',INFO:'INFO'};
元。每个([
{消息:'message1',类型:'ERROR'},
{message:'message2',键入:'WARNING'},
{message:'message3',键入:'INFO'}],
功能(一、数据)
{
messages.queue('messages',function())
{
消息(data.message,data.type)
}); 
}
);
$("", {
文本:“显示消息”,
单击:函数(){
ShowNextQueedMessage()
}
}).附于(“主体”);
函数showNextQueedMessage()
{
messages.dequeue(“messages”);
}

您能建议我如何开始显示下一个TqueedMessage()?我知道我可以通过按“x”按钮取消模式时调用它,但如何在用户不必按任何按钮的情况下启动队列?在向队列添加消息后立即调用ShowNextQueedMessage()时,它只显示一条消息。但我认为这可能与我使用ajax有关,它的结果作为一条消息使用,而在几行之后,我添加了第二条消息(不检查ajax调用是否完成)。这将只显示最后一条(非ajax)消息。我将看看等待ajax调用完成是否会有所帮助,但也欢迎提出任何建议。