在发布之前,我已经阅读了很多东西,并试图让我能够使其工作。所以基本上我试图使用ajaxStop()作为一种钩子来完成所有其他jQuery ajax请求已被加载后做的东西,所以我可以操纵并添加更多。jQuery ajaxStop()增加并多次触发
但似乎当我使用ajaxStop()似乎执行我额外的请求多次添加...
现在有点试验和错误之后。我了解到这是因为在我的ajaxStop()函数中,我调用另一个ajax文章来获取点击数据后的数据,以填充弹出窗口。我需要这个点击事件处理程序在所有其他ajax加载后注册...因为如果我将它从ajaxStop()方法中取出,多重性错误消失,但是如果通过ajax刷新内容而不是click事件,再次注册。我很可能会出现这个错误,但可以使用一些帮助。现在已经很晚了,我的大脑受到了伤害,所以明天我会重新审视它。
jQuery('.content').one('ajaxStop', function() {
setInterval(doPopUpOptionsMenu , 1000);
return false;
});
doPopUpOptionsMenu内部是另一个Ajax调用来获取弹出选项的内容。
function doPopUpOptionsMenu() {
jQuery(".activity-popUpMenu").one('click',function(e) {
var activityId = jQuery(this).parent().attr('id').split('-');
//code to grab options and show the user the Options box.
jQuery("#optionsPopUpContainer").css({'display': 'block', 'position' :'absolute', 'top' : e.pageY , 'left' : e.pageX});
var myAjaxURL = "example.com";
var jqxhr = jQuery.post(myAjaxURL, { menuOptions : true, id : activityId[1] } , function($response) {
jQuery("#optionsPopUpContainer").html($response);
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
});
jQuery(".activity_update").hover(
function(){
jQuery(this).children('.activity-popUpMenu').addClass('activated');
} ,
function() {
jQuery(this).children('.activity-popUpMenu').removeClass('activated');
//jQuery(".activity-popUpMenu").unbind('click');
});
}
现在在第一次点击时会弹出两次警告,因为它应该一次成功,一次完成。比我再次点击弹出选项,它弹出四个警告比八比16,并保持倍增弹出窗口。就像我说的我想象这是由于ajaxStop调用内的ajax,但我怎么能绕过它或做更好的事情?
2012-05-04
Pengume