在发布此内容之前,我已经阅读了大量内容,并尽我所能让它发挥作用。所以基本上我正在尝试使用 ajaxStop() 作为一种钩子来完成所有其他 jQuery ajax 请求之后的操作,这样我就可以对其进行操作和添加更多内容。
但似乎当我确实使用 ajaxStop() 时,它似乎多次执行我在请求中添加的附加内容......
现在经过一些试验和错误。我了解到这是因为在我的 ajaxStop() 函数中,一旦单击某些内容,我将调用另一个 ajax 帖子来获取数据,以填充弹出窗口。我需要在加载所有其他 ajax 后注册此单击事件处理程序...因为如果我将其从 ajaxStop() 方法中取出,多重性错误就会消失,但如果我通过 ajax 刷新内容而不是单击事件不会' t 注册了。我很可能会解决这个错误,但可以使用一些帮助。时间不早了,我的脑子很痛,所以明天我会重新审视它。
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');
});
}
现在,第一次单击时会弹出两次警报,一次成功,一次完成。然后我再次单击弹出选项,它会弹出四个警报,而不是 8 个比 16 个,并不断增加一倍的弹出窗口。就像我说的那样,我想这是由于 ajaxStop 调用中的 ajax 造成的,但我怎样才能绕过它或做一些更好的事情......?