2009-11-26 5 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를 통해)? 클릭 이벤트가 동일한 요소에 두 번 바인딩되어 두 번 확인 될 수 있습니다.

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 from stopPropagation() "동일한 요소의 다른 핸들러가 실행되지 않도록주의하십시오."따라서 "클릭"이 두 번 바운드되면 확인 대화 상자가 여전히 두 번 표시됩니다. –

+0

오케이, 나는이 경우에는 유용하지 않을 것이라는 점에 동의한다. 예제를 그대로두면 스크립트를 수정할 수 있습니다. –

+0

반환 false가 필요합니까? – billrichards