我有一个网页,其中ajax调用使用jQuery触发覆盖,如下所示:
$(document).on({
ajaxStart: function() { $("body").addClass("loading"); },
ajaxStop: function() { $("body").removeClass("loading"); }
});
这对我来说很好,但是页面中有几个ajax调用是后台作业,我不希望为那些ajax调用显示loading
消息。
有没有办法实现这个目标?
答案 0 :(得分:2)
绝对。只有在您不想应用要触发的$.ajax()
事件时,才需要在.ajaxStart()/.ajaxStop()
方法中将全局设置为false:
$.ajax({
url:'',
global:false, //<----add this
success:fn
})
您只能在$.ajax()
使用它。
来自文档:
全球(默认值:true)
类型:布尔值
是否为此请求触发全局Ajax事件处理程序。默认值为true。设置为false可防止触发 ajaxStart 或 ajaxStop 等全局处理程序。这可用于控制各种Ajax事件。
答案 1 :(得分:0)
您可以使用 window 范围中定义的flag
变量,当您不希望false
效果时,将其设置为ajaxStart / ajaxEnd
。否则它应该是true
$(document).on({
ajaxStart: function() { if(ajaxFlag){ $("body").addClass("loading"); ajaxFlag=true; },
ajaxStop: function() { if(ajaxFlag) $("body").removeClass("loading"); }
});