Javascript 如何处理所有元素而不是一个元素的ajaxSetup绑定

Javascript 如何处理所有元素而不是一个元素的ajaxSetup绑定,javascript,jquery,Javascript,Jquery,我的布局页面上有AJAX事件绑定: $(document).not("#approvalTitleBlock").bind("ajaxSend", function() { $("#loading").show(); }).bind("ajaxStop", function() { $("#loading").hide(); }); 这不会在ajaxSend上触发。但是,如果我将其替换为此,则其工作正常: $(document).bind("ajaxSend", function()

我的布局页面上有AJAX事件绑定:

$(document).not("#approvalTitleBlock").bind("ajaxSend", function() {
  $("#loading").show();
}).bind("ajaxStop", function() {
  $("#loading").hide();
});
这不会在
ajaxSend
上触发。但是,如果我将其替换为此,则其工作正常:

$(document).bind("ajaxSend", function() {
  $("#loading").show();
}).bind("ajaxStop", function() {
  $("#loading").hide();
});

为什么会有这种行为?

这是因为它是一个全局AJAX事件处理程序。它不会在您选择的元素上引发,事实上,它不会在任何DOM元素上引发。它只在
文档
本身上出现。见:

从jQuery 1.9开始,jQuery全局Ajax事件的所有处理程序,包括那些使用
ajaxSend()
方法添加的处理程序,都必须附加到
文档

更新

根据您的以下评论:


我想更改
ajaxSend
ajaxStop
上事件的行为,以便在
#approvalTitleBlock
上调用AJAX(它不应显示
#loading


在本例中,在发出请求时,将
global:false
属性添加到
$.ajax()
设置中。这将阻止为请求调用任何全局处理程序。

我不明白您的意思,也不明白您为什么要这样做。AJAX请求与任何元素都不相关,那么它如何解决这个问题呢?我想更改ajaxSend和ajaxStop上的事件在#approvalTitleBlock块上的行为(它不应该显示#loading),如果您理解我的意思,那么在这种情况下使用
$.AJAX()中的
全局:false
属性
该请求的设置。无法在全局事件触发后将其与元素关联。