并发调用simplemodal对象

时间:2011-02-04 09:05:42

标签: javascript jquery simplemodal

我必须同时为多个打开/关闭模态请求创建一个函数。

例如:当我调用showAjaxLoading(true)时,它会显示模态,而showAjaxLoading(false)则会调用模态。

问题:当我第一次提出显示模态的请求时,另一个快速请求将关闭它。我希望能够在数组中保留所有请求,并仅在最后一个请求结束时处理模式。

SimpleModal:对象simplemodal是唯一的。创建模态时,它返回对象本身。但是当你已经打开一个模态时,它会返回false。网址:http://www.ericmmartin.com/projects/simplemodal/

var showAjaxLoading = function (show) {
    var ajaxModal;
    if (show) {
        var aModal = $("#ajaxLoading").modal({ overlayId: 'ajaxloading-overlay', containerId: 'ajaxloading-container', closeClass: 'ajaxloading-close', close: false, escClose: false });
        if (aModal !== false) {
            ajaxModal = aModal;
        };
    } else {
        if (ajaxModal !== undefined && $.isFunction(ajaxModal.close)) {
            ajaxModal.close();
        };
    };
};

解决这个问题的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:2)

var modalDialog = {
    _requestsInProcess: 0,

    showAjaxLoading : function()
    {
        if ( this._requestsInProcess == 0 )
        {
            // open overlay here
        }

        this._requestsInProcess++;
    },

    hideAjaxLoading : function()
    {
        this._requestsInProcess--;
        if ( this._requestsInProcess == 0 )
        {
            // hide overlay here
        }
    }
}

尝试这样的事情/现在每次你的请求完成时你都可以调用modalDialog.showAjaxLoading()和每次你的请求完成时调用modalDialog.hideAjaxLoading()。