سؤال

لسبب غريب أنا أحصل على تأكيد مربع الخروج مرتين.هنا هو بلدي رمز:

$(".DeleteComment").live("click", function(){

    var CommentID = $(this).attr("rel");
    var confirm

    if (!confirm('Are you sure you want to permanently delete this comment?')){

        return false;

    }else{
        $(this).html("loading").css("color", "#999");
        //AJAX HERE
        return false;
    }


});
هل كانت مفيدة؟

المحلول

هل تحميل أي محتوى حيوي (عبر اياكس)؟ ويمكن أن يكون عليه الحال أن الحدث انقر فوق لا بد أن نفس العنصر الناجمة مرتين في تأكيد مزدوجة.

نصائح أخرى

وحاول هذا:

$_blockDelete = false;

$(".DeleteComment").live("click", function(event){

    event.preventDefault();
    //event.stopPropagation(); // it is not necessary

    if (!$_blockDelete)
    {
      $_blockDelete  =true;
      var rconfirm = confirm('Are you sure you want to permanently delete this comment?');
      if (rconfirm)
      {
          $(this).html("loading").css("color", "#999");
          var CommentID = $(this).attr("rel");
          //AJAX HERE
          //return the value "false" the variable "$_blockDelete" once again ajax response

      }
    }

});

يحدث ذلك عندما ربط الحدث على العناصر التي تحميلها بشكل حيوي عن طريق AJAX

لذلك على سبيل المثال نحن التحميل ديناميكية محتوى html (مثلالمحتوى الديناميكي في مشروط) على فوق edit شكل زر ،

وفي هذا المحتوى إذا كان لدينا binded انقر فوق الحدث على بعض زر على سبيل المثال delete زر, ثم في كل مرة نضغط على edit شكل زر ، فإنه يلزم على click الحدث delete الزر في كل مرة ،

و إذا كان لديك مجموعة تأكيد مربع على الحدث click delete زر ثم ، سوف يطلب منك الكثير من الوقت كما كان binded لهذا الحدث click يعني هنا إذا كان لدينا النقر edit شكل زر 5 مرات وبعد ذلك سوف يطلب تأكيد 5 مرات.

وذلك من أجل حل هذه المسألة يمكنك unbind الحدث في كل مرة قبل ملزم الحدث إلى تحميلها بشكل حيوي عنصر على النحو التالي :

$(document).off('click', '.DeleteComment').on('click', '.DeleteComment', function () {
   if (confirm('Are you sure you want to permanently delete this comment?')){
      //Delete process
      return true;
   }
   return false;
}

أو طريقة أخرى لحل هذه المشكلة هو إضافة البرنامج النصي الخاص بك في الصفحة الرئيسية, يعني صفحة ثابتة في تحميلها بشكل حيوي واحد.

هل حاول إزالة تلك المستخدمة يست var confirm؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top