所以这实际上是一个由两部分组成的问题:为什么它不起作用,我甚至应该打扰吗?
我有一个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');