全局 AJAX 处理程序不起作用



所以这实际上是一个由两部分组成的问题:为什么它不起作用,我甚至应该打扰吗?

我有一个ajax应用程序,它使用了很多jquery的.load((和.get((。在我的全局js文件中,我添加了这些行来测试jQuery的全局ajaxComlete函数:

$('body').ajaxComplete(function(e){
    alert();
});

当 ajax 在整个应用程序中运行时,我没有收到任何警报。有谁知道为什么?

我想要这样做的原因是因为我有很多通过类名应用的样式,并且每个 ajax 加载基本上清除了旧类并引入了新类。这删除了我的样式。所以我有一个名为 styleForm(( 的全局函数,它可以重新应用我所有的样式。我在每个单独的 ajax 回调中调用此函数。即:

$.get('source.cfm',funcion(){
    styleForm();
});

我知道拥有这个全局 ajax 函数将产生大多数人可能会认为的"清除器"代码。但它会对性能产生很大影响吗?如果是这样,我不想那样做。如果没有,那么我想让它工作。

你有没有试过将 ajaxComplete 绑定到$(document)

在我们的代码中,我们使用 $.ajaxSetup({})$(document).ajaxStart(function(){})$(document).ajaxStop(function(){})

您需要使用$(document)的原因:

$.get基本上是$.ajax的简写,它将触发文档上的ajax事件(.ajaxComplete.ajaxError等(。

仅当将

ajax 事件绑定到该事件或较低的 dom 元素时,$('body').ajaxComplete才会触发。通常这意味着类似$('<header>').load('http://www.example.com');

相关内容

最新更新