2009-11-26 2 views
4

По какой-то странной причине я получаю мой подтверждающий флажок, поднимающийся дважды. Вот мой код:jQuery/Javascript подтверждают, что выходите дважды

$(".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; 
    } 


}); 

ответ

13

Вы загружаете любой контент динамически (через ajax)? Это может быть случай, когда событие click привязано к одному и тому же элементу дважды, что приводит к двойному подтверждению.

0

ли вы попробуйте удалить, что не используемый var confirm?

+0

Упс, попытался удалить его, не повезло. – Adam

4

попробуйте это:

$_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 

     } 
    } 

}); 
+0

из jQuery doc on stopPropagation() «Обратите внимание, что это не предотвратит запуск других обработчиков одного и того же элемента», поэтому, если «щелчок» связан дважды, диалог подтверждения будет отображаться дважды. –

+0

ОК, я согласен с вами в том, что в этом случае это не будет полезно. лучше оставить пример, чтобы изменить скрипт. –

+0

Является ли возвращение ложным? – billrichards