有选择地调用ajaxStart和ajaxStop

时间:2015-06-02 09:09:38

标签: javascript jquery ajax

我有一个网页,其中ajax调用使用jQuery触发覆盖,如下所示:

$(document).on({
    ajaxStart: function() { $("body").addClass("loading");    },
    ajaxStop: function() { $("body").removeClass("loading"); }    
});

这对我来说很好,但是页面中有几个ajax调用是后台作业,我不希望为那些ajax调用显示loading消息。

有没有办法实现这个目标?

2 个答案:

答案 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"); }    
});