禁用某些ajax调用的BlockUI

Xre*_*der 5 ajax jquery blockui

我正在使用辉煌的BlockUI,并使用默认设置

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
Run Code Online (Sandbox Code Playgroud)

这很棒 - 除非我在页面上添加自动完成元素,然后一旦用户开始输入就会启动blockUI.而不是显式设置ajax调用什么来启动块UI可以有人想到一种方法来禁用某些ajax函数的blockUI?

小智 23

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

现在我们有以下内容:

settings name:global,Type:Boolean,默认值:true

描述: 是否为此请求触发全局Ajax事件处理程序.默认值为true.设置为false以防止触发像ajaxStart或ajaxStop这样的全局处理程序.这可用于控制各种Ajax事件.

例:

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

以上示例将停止执行任何ajax start或ajax stop事件,如blockUI.


Sim*_*eon 7

你可以这样做:

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; }
    });
});
Run Code Online (Sandbox Code Playgroud)