1
我想注册一个全局的ajaxSuccess处理程序,它会在某些情况下取消调用程序函数的特定ajaxSuccess处理程序。jquery:如何从全局ajaxSuccess处理程序中取消特定的ajaxSuccess处理程序
有没有办法做到这一点?
在此先感谢
我想注册一个全局的ajaxSuccess处理程序,它会在某些情况下取消调用程序函数的特定ajaxSuccess处理程序。jquery:如何从全局ajaxSuccess处理程序中取消特定的ajaxSuccess处理程序
有没有办法做到这一点?
在此先感谢
不幸的是有没有办法做你以后,不是这样的,你必须设置一个全局变量或一些其他的一些途径。如果你看看how the jQuery success function works:
handleSuccess: function(s, xhr, status, data) {
// If a local callback was specified, fire it and pass it the data
if (s.success) {
s.success.call(s.context, data, status, xhr);
}
// Fire the global callback
if (s.global) {
jQuery.ajax.triggerGlobal(s, "ajaxSuccess", [xhr, s]);
}
}
你可以看到它只是排序的问题,当地success
处理总是发生前的全球事件被激发,这将触发任何$.ajaxSuccess()
处理程序。做你追求的最简单的方法是调用任何功能,可以根据当地的success
处理程序的开始取消,就像这样:
$.ajax({
//options...
success: function(data) {
if(shouldIBeCanceled()) return;
//rest of code...
}
});
另一种方法是编辑的jQuery核心,或延长它,这将一定程度上产生插件的不可预知的行为,所以我不会沿着这条路线走下去,因为它在升级时也可能会带来新的痛苦。