【问题标题】:Disable BlockUI for certain ajax calls为某些 ajax 调用禁用 BlockUI
【发布时间】:2011-07-13 08:38:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: jquery ajax blockui


    【解决方案1】:

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

    现在我们有以下内容:

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

    说明: 是否为此请求触发全局 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。

    【讨论】:

    • 太棒了!今天学到了... :)
    【解决方案2】:

    你可以这样做:

    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; }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2013-05-10
      • 1970-01-01
      相关资源
      最近更新 更多