5

我正在使用出色的 BlockUI,并使用默认设置

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

这很棒——除非我在页面上添加了一个自动完成元素,然后一旦用户开始输入,blockUI 就会启动。除了显式设置启动块 UI 的 ajax 调用之外,任何人都可以想办法为某些 ajax 函数禁用 blockUI 吗?

4

2 回答 2

24

在 jQuery 中,ajax 调用接受不同的设置一组配置 Ajax 请求的键/值对。所有设置都是可选的。

现在我们有以下内容:

设置名称全局类型布尔值默认值true

说明: 是否为此请求触发全局 Ajax 事件处理程序。默认值为真。设置为 false 以防止触发 ajaxStart 或 ajaxStop 等全局处理程序。这可用于控制各种 Ajax 事件。

例子:

$.ajax({
        global: false,
        type: "POST",
        url: 'ajax/test.html',
        success: function(data) {
          $('.result').html(data);
          alert('Load was performed.');
        }
});

上面的示例将停止执行任何 ajax 启动或 ajax 停止事件,例如 blockUI。

于 2011-04-29T03:19:33.143 回答
8

你可以这样做:

var dontBlock = false;

$(document).ajaxStart(function(){
    if(!dontBlock)
        $.blockUI();
}).ajaxStop($.unblockUI);

// And in the ajax methods (to be excluded), set dontBlock accordingly

$('#autocomplete').keydown(function(){
    dontBlock = true;
    $.ajax({
        // url, data etc.
        success: function(){ dontBlock = false; }
    });
});
于 2011-03-11T09:23:00.277 回答