2012-05-12 1 views
0

나타납니다확인 상자가 나는 다음과 같은 코드를 사용하여 행을 삭제하고, jQuery를 사용하여 AJAX를 사용하고

$('#example a.delete'). live('click', function (e) { 
e.preventDefault(); 
if (confirm("Are you sure you want to delete this row?")) 
{ 

    alert("Hello World!") 
} 

}); 

나는 그리드 뷰 쇼 버튼는 그리드보기 페이지없이 나타납니다 클릭하면 아약스로 인해 상쾌. 격자보기 단추 표시을 두 번 이상 클릭하면 그리드보기 영역이 다시 새로 고쳐집니다. 그러나 상자가 한 번 이상 표시되는지 확인하십시오. 이는 내 번호와 같습니다. 클릭 수는 그리드보기 표시 버튼, 하나의 행을 삭제 버튼을 클릭하면.

어떻게 이것을 피할 수 있습니까?

편집

HTML 코드 :

<td><a class="delete" href="#" style="margin-left: 10px"><img src="images/delete-icon.png" width="16px" height="16px" /></a></td> 

전체 코드 조각을 편집 됨 :

$('#example a.delete'). live('click', function (e) { 
e.preventDefault(); 
if (confirm("Are you sure you want to delete this row?")) 
{ 
    $getCode = $(this).parent().parent().attr('id'); 
    var oTable = $('#example').dataTable(); 
    var index =oTable.fnGetPosition(document.getElementById($getCode)); 

    $.post("DeleteDepartment", { 
     depID:$getCode     
    }, function(data) { 
     if(data.result >0){ 
      var oTable = $('#example').dataTable(); 
      oTable.fnDeleteRow(index); 
     }else{ 
      alert("Operation Fail"); 
     } 
    }); 

} 

}); 
+0

어떤 jquery 버전을 사용하고 계십니까? –

+0

jQuery v1.7.1 @ltiong_sh –

답변

1

여러 이벤트를 부착 한 것으로 나타났습니다 버튼에. 너는 오직 live() ONCE로 전화 한 번 뿐인 걸 확신 하나? 여러 번 호출하면 여러 핸들러가 생깁니다. 코드가 클릭 할 때마다 한 번씩 확인을 할 기록처럼 보이는

+0

예 친애하는, 한 번만 부른다. @Kolink –

0

는 (난 그냥 개인적으로 .onclick = function() {...}를 사용하는 것을 선호하는 이유 물론이다). 코드를 한 번만 확인하려면 이미 확인했음을 기억해야합니다.

서버가 성공 콜백 함수를 호출 할 때까지 행이 삭제되지 않습니다. 이 시간 동안 행을 계속 클릭하고 클릭 이벤트를 실행할 수 있습니다.

사용자가 확인한 다음 행을 클릭 할 때마다이 변수를 확인할 때 변수 또는 속성을 설정할 수 있습니다. 변수가 설정되어 있지 않으면 확인 메시지 만 표시하십시오.

클릭 한 요소의 상태를 변경하거나, 이미지를 변경하거나, 스타일을 변경하거나, 속성을 설정할 수 있습니다. 클릭 한 것으로 코드에 알리고 행이 이미 삭제로 표시되었음을 사용자에게 알릴 수 있습니다.

또는 jquery의 .one() 메소드를 사용하여 이벤트를 첨부 할 수 있습니다.

+0

alert ("Hello World!")는 단지 샘플이며, 현재 행을 제거하고있다. 그러나 그것은 한 번 이상 확인합니다. @hoshp –

+0

알겠습니다. 그것은 코드에서 명백하지 않았습니다. 해결책을 찾지 못한다면 실제로 문제를 보여주는 작은 예제를 만들어 jsfiddle에 넣는 것이 가장 좋습니다. – joshp

+0

전체 코드를 붙였습니다. @joshp –

4
$('#example a.delete').unbind('click').bind('click', function (e) { 
    e.preventDefault(); 

    if (confirm("Are you sure you want to delete this row?")) 
    { 

     alert("Hello World!") 
    } 

});

+0

코드가 동적으로 새 행에 대해 작동하지 않습니다. 페이지가 새로 고침 될 때까지 @pankil thakkar –

관련 문제