我使用ajax UI插件blockUI来阻止每个JQuery请求的UI。它就像一个护身符,然而,当我调用ajax来获取自动补全建议项时,我不想阻塞UI (或者至少不显示“请等待”消息)。我该怎么做?我使用jquery自动完成插件来实现自动完成功能。
有没有一种方法可以告诉block UI插件不要阻止自动完成的UI?
发布于 2010-04-18 21:06:01
$('#myWidget').autocomplete({
source: function(data, callback) {
$.ajax({
global: false, // <-- this is the key!
url: 'http:...',
dataType: 'json',
data: data,
success: callback
});
}
});发布于 2010-04-23 19:47:23
Hm,看起来是jquery中缺少的功能:)您可以使用全局标志来指示它是否是自动完成调用,并将其封装在一个通用的自动完成函数中
var isAutoComplete = false;
function autoComplete(autocomplete){
isAutoComplete = true;
if($(autocomplete).isfunction())
autocomplete();
}
$(document).ajaxStart(function(){if(!isAutoComplete)$.blockUI();}).ajaxStop(function(){isAutoComplete = false;$.unblockUI();});这不是一个很好的解决方案,但它应该可以工作。
发布于 2010-04-18 14:03:34
尝试使用装饰器
$.blockUI = function() {
if (condition_you_dont_want_to_block) {
return;
}
return $.blockUI.apply(this, arguments);
}或者,您可以编写自己的更智能的块函数
function my_blockUI() {
if (condition_you_dont_want_to_block) {
return;
}
$.blockUI();
}
$(document).ajaxStart(my_blockUI).ajaxStop($.unblockUI);https://stackoverflow.com/questions/2634963
复制相似问题