我正在使用优秀的BlockUI,并使用默认的
进行设置$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
哪个好 - 除非我在页面上添加自动完成元素,然后一旦用户开始输入就会启动blockUI。而不是显式设置启动块UI的ajax调用,有人可以想到一种方法来禁用某些ajax函数的blockUI吗?
答案 0 :(得分:23)
在jQuery中,ajax调用接受不同的设置一组配置Ajax请求的键/值对。所有设置都是可选的。
现在我们有以下内容:
设置名称:全局,类型:布尔,默认:<强>真强>
<强> 说明 强> 是否为此请求触发全局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.');
}
});
以上示例将停止执行任何ajax start或ajax stop事件,如blockUI。
答案 1 :(得分:6)
你可以这样做:
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; }
});
});