首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery数据块UI异常

问jQuery数据块UI异常
EN

Stack Overflow用户
提问于 2010-04-14 12:47:56
回答 5查看 3.3K关注 0票数 9

我使用ajax UI插件blockUI来阻止每个JQuery请求的UI。它就像一个护身符,然而,当我调用ajax来获取自动补全建议项时,我不想阻塞UI (或者至少不显示“请等待”消息)。我该怎么做?我使用jquery自动完成插件来实现自动完成功能。

有没有一种方法可以告诉block UI插件不要阻止自动完成的UI?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-18 21:06:01

代码语言:javascript
复制
$('#myWidget').autocomplete({
    source: function(data, callback) {
        $.ajax({
            global: false,  // <-- this is the key!
            url: 'http:...',
            dataType: 'json',
            data: data,
            success: callback
        });
    }
});
票数 21
EN

Stack Overflow用户

发布于 2010-04-23 19:47:23

Hm,看起来是jquery中缺少的功能:)您可以使用全局标志来指示它是否是自动完成调用,并将其封装在一个通用的自动完成函数中

代码语言:javascript
复制
    var isAutoComplete  = false;
    function autoComplete(autocomplete){
    isAutoComplete = true;
    if($(autocomplete).isfunction())
       autocomplete();
    }

        $(document).ajaxStart(function(){if(!isAutoComplete)$.blockUI();}).ajaxStop(function(){isAutoComplete = false;$.unblockUI();});

这不是一个很好的解决方案,但它应该可以工作。

票数 2
EN

Stack Overflow用户

发布于 2010-04-18 14:03:34

尝试使用装饰器

代码语言:javascript
复制
$.blockUI = function() {
    if (condition_you_dont_want_to_block) {
        return;
    }
    return $.blockUI.apply(this, arguments);
}

或者,您可以编写自己的更智能的块函数

代码语言:javascript
复制
function my_blockUI() {
    if (condition_you_dont_want_to_block) {
        return;
    }
    $.blockUI();
}
$(document).ajaxStart(my_blockUI).ajaxStop($.unblockUI);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2634963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档