在發佈之前,我已經閱讀了很多東西,並試圖讓我能夠使其工作。所以基本上我試圖使用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,但我怎麼能繞過它或做更好的事情?
是的,但它工作,如果文檔更改可以說我調用ajax後頁面加載更改內容,並希望調用此彈出選項ajax再次。這不只是一次工作? – Pengume
我認爲這是ajaxStop的用途。 ajaxComplete是當一個Ajax調用完成時。另外我上面說的是不正確的。它沒有改變任何使用文檔作爲選擇器。 – Pengume
我更多地使用它作爲全局偵聽器而不是附加任何東西。所以你可以在你的文檔中準備好$ .ajax(___)$(document).ajaxComplete()將在你的文檔準備完成後觸發$ .ajax()。所以可以說,你已經準備好了10個Ajax調用。一旦他們完成$(文檔).ajaxComplete將在這10次調用完成後觸發。這不是你想要達到的目標嗎? – Vic