私はこれを投稿する前に1トン読んで、それを機能させるためにできることを試しました。つまり、基本的には、他のすべてのjQuery ajaxリクエストが読み込まれた後、ajaxStop()を一種のフックとして使用して、操作して追加できるようにしようとしています。
しかし、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');
});
}
これで、このアラートが最初のクリックで2回ポップアップします。これは、成功の場合は1回、完了の場合は1回です。ポップアップオプションをもう一度クリックすると、16よりも8つではなく4つのアラートがポップアップし、ポップアップが2倍になります。私が言ったように、これはajaxStop呼び出し内のajaxが原因であると想像しましたが、どうすればそれを回避したり、より良いことをしたりできますか...?