如何在一个时间间隔内关闭jQuery UI对话框?

时间:2011-04-14 19:04:04

标签: javascript jquery jquery-ui

我正在尝试从间隔内关闭jQuery UI对话框。我有什么似乎应该工作,但由于某种原因它不会。我在模态窗口内部的进度条动画时遇到了一些麻烦,但是弄明白了。由于那不想以正常方式制作动画,我想知道对话框是否也不想关闭正常方式。
注意:它始终是“Made it!”。

    if(data.version != localStorage.getItem("Sync Version")) {
        //Start the progress bar.
        $("#progress-bar").progressbar({
            value:0,
            complete : function(event, ui) {
                $("#modal-message").dialog("close");
            }
        });

        //Modal Width
        modalWidth = 400;

        //Throw up a modal.
        $("#modal-message").dialog({
            height: 300,
            width: modalWidth,
            modal: true
        });

        //Queries to execute on initial sync.
        qt = 0;
        queryThreshold = 4000;

        //Start the interval
        $(function() {
            var progress = setInterval(function() {
                var qval = Math.floor(100*(qt / queryThreshold));

                if (qval == 100) {
                    console.log("Made it!");
                    $("#modal-message").dialog("close");
                    clearInterval(progress);
                } else {
                    //$("#progress-bar").progressbar("option", "value", qval);
                    $("#progress-bar .ui-progressbar-value").animate({width : qval+"%"}, modalWidth);
                }_
            },750);
        });

        //Save the newest sync verison.
        localStorage.setItem("Sync Version", data.version);

        //Perform a full sync.
        full_sync();
    }

2 个答案:

答案 0 :(得分:1)

在加载DOM之后,您是否将此代码称为?我是这么认为的,或者$("#progress-bar").progressbar({ /*...*/ });$("#modal-message").dialog({ /*...*/ });实际上可能没有做任何事情。

也就是说,尝试将对话框存储在如下变量中:

var mydialog = $("#modal-message").dialog({

然后在你的函数中引用它:

//$("#modal-message").dialog("close");
//becomes:
mydialog.dialog("close");

答案 1 :(得分:0)

尝试放:

    $("#modal-message").dialog({
        height: 300,
        width: modalWidth,
        modal: true
    });

$(function() {...})