我有一个jQuery插件,我需要将ajaxStop实现到它的一部分。 下面是我的代码中显示结构的片段(可能不是100%)。
我已经展示了如何将我的函数设置为方法,以防ajaxStop需要作为全局函数实现,不确定如何在当前设置中执行此操作。
我遇到的问题偶尔是ajaxStop即使我的ajax响应成功恢复也不会被解雇。
非常感谢您的帮助!
也许有人在Mac上使用ajaxStop时出现问题? 我无法找到解决方案,为什么它不能一直无效。
我认为ajaxStop不太可靠:(
(function($) {
$.fn.doRentalButtons = function($params) {
var newMethods = {
startAction:function() {
var $button = $('a.button');
$button.click(function(){
var params = {one:'something',two:'morethings'}
$(this).doAjax(params);
});
},
doAjax:function(params) {
$current_button = $(this);
$container_div = $('#container');
$.ajax({
type: 'POST',
url: 'whatever.html',
data: params,
success: function(data) {
//dostuff
var jQueryObject =
if (global_var_hide == 0) {
$(this).afterPostRequests($current_button);
}
}()
});
},
afterPostRequests:function($current_button) {
$().ajaxStop(function(){
$(this).show();
$(this).positionDiv($current_button);
});
}
};
$.each(newMethods, function(i) {
$.fn[i] = this;
});
};
})(jQuery);
答案 0 :(得分:2)
只是对此的更新:
我最终使用的是计数器而不是AjaxStop。 在每个按钮单击时增加计数器。并且在ajax成功/错误减1柜台。
然后我只运行我的ajax请求,如果计数器== 0。
这似乎适用于我需要的东西。但这似乎是一个临时解决方案,可能有更好的方法。
(function($) {
$.fn.doRentalButtons = function($params) {
var ajax_busy = 0;
var newMethods = {
startAction:function() {
var $button = $('a.button');
$button.click(function(){
var params = {one:'something',two:'morethings'}
$(this).doAjax(params);
});
},
doAjax:function(params) {
$current_button = $(this);
$container_div = $('#container');
ajax_busy++;
$.ajax({
type: 'POST',
url: 'whatever.html',
data: params,
success: function(data) {
//dostuff
ajax_busy--;
var jQueryObject = $('#myDiv');
if (ajax_busy == 0) {
jQueryObject.show();
jQueryObject.positionDiv($current_button);
}
},
error: function() {
ajax_busy--;
}
});
}
};
$.each(newMethods, function(i) {
$.fn[i] = this;
});
};
})(jQuery);