打开bootstrap模式对话框

时间:2015-04-23 09:12:51

标签: javascript jquery ajax twitter-bootstrap blockui

我在执行请求时使用jquery BlockUI插件来锁定屏幕。默认情况下,我为每个ajax调用设置它。但我也有Bootstrap模式,它使用ajax加载数据。

$(document)
.ajaxStart(function() {
    $.blockUI({
        message: $('#img-loader'),
        css: {
            border: 'none', 
            padding: '5px', 
            'background-color': 'transparent', 
            '-webkit-border-radius': '10px', 
            '-moz-border-radius': '10px', 
            opacity: .6, 
            color: '#fff',
            cursor: 'wait'
        }
    });
})
.ajaxStop($.unblockUI);

问题 - 当我打开模态屏幕变暗时(应用2个块UI)。 打开模态时如何unblockUI(只使用Bootstrap后台锁?)

我尝试了什么:

$('.modal').on('shown.bs.modal', function() {
    $.unblockUI();
});

OR

$('.modal').on('show.bs.modal', function() {
        $.unblockUI();
    });

但这不起作用。似乎BlockUI插件阻止屏幕了一会儿。

1 个答案:

答案 0 :(得分:2)

您正在注册一个触发任何AJAX调用的全局事件处理程序。代码并没有对上下文进行区分。

不幸的是,you can't access the details of the AJAX request from the ajaxStart handler。否则,我建议将blockUI: true之类的额外选项传递给处理程序随后将使用的请求。

相反,您必须将$.blockUI({...});的代码移动到辅助函数中(因此您不必每次都编写它)。现在,每次进行要阻止UI的AJAX调用时,都必须调用此辅助函数。调用新辅助函数的好地方是the beforeSend callback